我注意到我的python库和其他依赖项存储在我的目录层次结构周围的不同位置。例如,
/Library/Python/2.7/site-packages/
/usr/local/lib/python2.7/site-packages/
/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/
/Users/<name>/bin/
最近未能升级其中一个(我的$PATH
var现在包含7个目录)让我相信我需要以某种方式重新组织这些文件。
1)当点击或“刷新”新图书馆时,下载的文件应该转到哪个特定目录? (例如/Library/python/2.7/site-packages)
2)是否有任何有用的资源来说明如何组织自己的个人文件系统? (特别是下载的python库,或者更普遍的)
答案 0 :(得分:1)
让我们把它们排除在外:
1)当'pip'ing'或'酿造'新库时,比如说下载文件应该去哪个特定目录?
首先,下载的文件进入临时目录并在安装后删除。这由pip
和brew
自动处理。
对于Python包,无论是否由pip
安装,您都可以在系统范围和特定于用户的安装之间进行选择(参见User Installs),但除此之外,它们只是进入您的Python站点包。可以配置该位置,但没有充分的理由。对于Apple预装的Python,它是/Library/python/2.7/site-packages
。如果你想要更多的控制,你不应该试图保持自定义的site-packages目录(或多个Python安装);使用virtualenv
构建单独的虚拟环境,然后pip
将安装到当前处于活动状态的环境中,而不是安装到正常的站点包中。
对于使用brew
安装的程序和库,它们内置于“{1}}下的”kegs“隔离目录中,然后任何有用的内容从那里链接到/usr/local/Cellar
,{ {1}}等。如果您想了解更多信息,请使用Homebrew文档详细说明。这当然包括您作为Python包的依赖项安装的库。例如,如果您/usr/local/bin
/usr/local/lib
,brew install libxslt
不知道为什么您正在安装pip install lxml
,那么它只是构建它一个小桶,并将其链接到brew
,就像其他任何东西一样。
无论哪种方式,你都应该不尝试组织事情。 libxslt
和/usr/local/lib
都知道他们安装的地方,如果你事后搞砸了,卸载,更新等可能会破坏。
最近未能升级其中一个(并且我的$ PATH var现在包含7个目录)让我相信我需要以某种方式重新组织这些文件。
您的pip
与Python查找库的位置无关。这就是你的shell寻找可执行程序的地方。 Python查看的内容是sys.path
,这是完全不同的事情。
不,他们真的不是。您安装的每个Python库都会进入site-packages目录。我注意到我的python库和其他依赖项存储在我的目录层次结构的各个地方
那么,brew
上的所有其他内容呢?嗯,有Python标准库($PATH
和/或sys.path
),以及Apple预安装的额外模块(/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7
),以及其中的各种子目录(以及zip文件和eggfiles)两个位置,当然还有当前工作目录(/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7.zip
或/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
),应该是它。
(即/ usr / local / python,/ Library/python/2.7/site-packages,或/ usr / bin / python ..)
'.'
不是存储库的地方。它根本不是一个目录;这是一个可执行文件。当您在终端输入''
或运行以/usr/bin/python
或python
开头的脚本时,该程序会运行。
#!/usr/bin/python
根本不存在。它不是Apple预装Python,官方Python.org安装或Homebrew安装的标准路径的一部分。如果您已创建并将其添加到#!/usr/bin/env python
......那么,如果您不想这样做,请不要这样做。
如果你的意思是/usr/local/python
,那么(a)这是一个可执行文件,而不是库的地方,(b)这意味着你已经安装了第二个Python和Apple预安装的Python,如果你不能让它们保持平直,你应该摆脱它。