python - Python 的 'Extras' 和 'site-packages' 目录有什么区别?

标签 python macos python-2.7 package osx-mountain-lion

我对 Python 在 OS X 上使用“Extras”和“site-packages”中的包的方式感到困惑。特别是,我对我在这些目录中看到的内容、目录中的重复包如何相互影响以及我应该将安装的包放在哪里感到困惑。

我曾假设“Extras”1 是不是核心 Python 一部分的包的位置,但它们仍然随给定平台分发。例如,OS X 随 PyObjCtwistednumpy 等一起分发;这些都可以在“Extras”中找到。我还假设 'site-packages'2 是我随后安装的包所在的位置,并且该目录在"new"机器上为空或不存在。此外,我假设安装一个新包会单独保留“Extras”中的版本,并将我所做的任何更新放在“site-packages”中,它们会“屏蔽”“Extras”中的那些。 (因此,例如,可以通过删除“站点包”来简单地恢复默认安装。)

让我感到困惑的是,我的“Extras”目录中的内容正在减少。与新安装的 OS X (10.8.2) 上的内容相比,我当前配置的“Extras”丢失了

altgraph
altgraph-0.9-py2.7.egg-info
dateutil
macholib
macholib-1.4.2-py2.7.egg-info
modulegraph
modulegraph-0.9.1-py2.7.egg-info
numpy #though numpy-1.6.1-py2.7.egg-info is there
pkg_resources.py  # though .pyc is there
py2app
py2app-0.6.3-py2.7.egg-info
setuptools  # though setuptools-0.6c12dev_r88846-py2.7.egg-info is there
site.py  # though .pyc and .pyo are there
xattr
xattr-0.6.2-py2.7.egg-info
zope
zope.interface-3.5.1-py2.7.egg-info

并且有两个额外的文件在全新安装中找不到

pkg_resources.py.OLD.1356069438.31
setuptools-0.6c12dev_r88846-py2.7.egg-info.OLD.1356069438.31
setuptools.OLD.1356069438.31

据我所知,这些都是我自己更新的包,所有版本都存在于“站点包”中。

“Extras”目录的内容应该以这种方式“减少”吗?更新'Extras'中的包是否将其“移动”到'site-packages',或者'Extras'版本应该单独留下并简单地被'site-packages'中的那些“屏蔽”?


1:/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python
2: /Library/Python/2.7/site-packages/

最佳答案

OSX(和 Linux)似乎不喜欢在 python 发行版的默认安装目录中安装额外的 python 包。

pip 可以搜索(就像 python 本身一样)已安装的模块,如果您进行升级,将卸载旧版本并在您要求的位置安装新版本,默认为站点包。如果您仔细查看 pip 的输出,它会告诉您删除了什么以及安装了什么。

因此,只有当您告诉 pip 安装到 Extras 目录,或者默认为 OSX 修补 pip 时,这才有效。

删除旧版本实际上是一件好事,否则您导入的模块版本将取决于您的搜索路径 (sys.path),这很容易出错。

它是否应该减少可以争论,但这是您使用 pip 进行升级的方式的正常结果。

关于python - Python 的 'Extras' 和 'site-packages' 目录有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14881205/

相关文章:

python - 想读两列日期,但只得到一列

python - 尝试在 Mac OS X Yosemite 上安装 MySQL-python 时出错

python-2.7 - Graphite Web 错误日志,OperationalError : no such table: auth_user

ios - 在 macOS 编程中是否有 UIGraphicsGetImageFromCurrentImageContext() 的替代方法?

Python 优化发送包。如何预防?

python - scrapy提取图片的url

python - 如何完全去除散点图周围的空白

python - 我不明白的Python3 AttributeError

python将列表附加到元组

php - PHP5、MySQL 和 Macbook Pro 的组合是否构成 LAMP 堆栈?如果不是,那是什么?