gpt4 book ai didi

python - 为什么安装 python 包会破坏 setuptools 并导致找不到 pkg_resources?

转载 作者:太空宇宙 更新时间:2023-11-03 11:09:42 26 4
gpt4 key购买 nike

这部分是一个问题,部分是我自己在遇到此错误时发现的问题:

(cdbak)USER-MBP-2:.virtualenvs <YOUR_USER_NAME>$ pip 
Traceback (most recent call last):
File "/Users/<YOUR_USER_NAME>/.virtualenvs/cdbak/bin/pip", line 6, in <module>
from pkg_resources import load_entry_point
ImportError: No module named pkg_resources

当我尝试在我的虚拟环境中通过 pip 安装 pypsum 以与 django 一起使用时出现此问题。

(cdbak)USER-MBP-2:.virtualenvs <YOUR_USER_NAME>$ pip install pypsum

我一直在虚拟环境中工作,所以我很幸运,在它坏了之后,我可以用我写的脚本重置我的虚拟环境。

我复制了安装过程的输出并开始仔细研究它,似乎 setuptools 中出现了问题。

安装过程尝试构建包,但它没有在 setuptools 中找到 build_py,这导致它通过重命名当前安装的 setuptools 来“修补”setuptools 安装。

这是我认为时髦的事情开始发生的部分:

Setuptools installation detected at /Users/<YOUR_USER_NAME>/.virtualenvs/cdbak/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg
Egg installation
Patching...
Renaming /Users/<YOUR_USER_NAME>/.virtualenvs/cdbak/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg into /Users/<YOUR_USER_NAME>/.virtualenvs/cdbak/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg.OLD.1321360113.04

然后它继续尝试安装另一个版本的 setuptools,看起来是这样:

After install bootstrap.
Creating /Users/<YOUR_USER_NAME>/.virtualenvs/cdbak/lib/python2.7/site-packages/setuptools-0.6c11-py2.7.egg-info
Creating /Users/<YOUR_USER_NAME>/.virtualenvs/cdbak/lib/python2.7/site-packages/setuptools.pth

但它似乎没有在当前位置正确安装 setuptools 包,然后导致缺少 pkg_resources 模块(实际上,它还缺少很多其他东西)

[设置]

OS: Mac OS X Lion
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
virtualenv v1.6.1

使用 virtualenvwrapper 使用需求文件安装这些包的全新虚拟环境:

mercurial==1.9.3
Django>=1.3.1
MySQL-python>=1.2.3
Sphinx
wsgiref
pylint
yolk
dbgp
django-debug-toolbar
south

我能够使用 pip 来安装其他包,但由于某种原因,它似乎与此安装中断。

[问题]
- 人们认为这是这个包的安装过程中的错误吗?
- 还是设置工具有误?
- 或者,我只是安装不正确?

[额外说明]
我可以将文件与整个输出一起附加,但它是一个长文件,我决定只提取我认为相关的部分。如果您想查看完整文件,我也可以上传。

最佳答案

我不确定你的所有问题,但至少有一个问题是由 loremipsum 包引起的,它是 pypsum< 的依赖项包。由于某些原因,在loremipsumsetup.py文件中,作者包含了对distribute包的具体要求:

egg = {
'name': name,
'version': module.__version__,
'author': author,
'author_email': email.strip('<>'),
'url': url,
'description': "A Lorem Ipsum text generator",
'long_description': long_description,
'classifiers': module.__classifiers__,
'keywords': ['lorem', 'ipsum', 'text', 'generator'],
'setup_requires': ['distribute'],
'install_requires': ['distribute'],
'packages': [name],
# 'package_dir': {'': '.'},
# 'package_data': {'': 'default/*.txt'},
# 'data_files': [(name, ('default/dictionary.txt', 'default/sample.txt'))],
'include_package_data': True,
'test_suite': 'tests.suite' }

distribute,如您所知,是 setuptools 包的一个分支;这背后有着悠久的历史。由于 distribute 应该是 几乎 setuptools 的插件兼容替代品,它会尝试伪装成 setuptools并禁用任何已安装在该 Python 实例中的现有 setuptools。因此,将 distribute 作为要求放在 setup.py 文件中通常不是一个好主意。默认情况下,virtualenv 将安装一个版本的 setuptools,但它确实可以选择使用 distribute。 OS X 10.6 和 10.7 中 Apple 提供的系统 Python 已经预装了 setuptools 版本,并且由于它们位于非标准系统目录中,因此无法轻易修补。在 OS X 上使用 virtualenv 时,一个简单的解决方法似乎是也使用它的 no-site-packages 选项,这将阻止 setuptools 版本系统 Python 干扰 virtualenv 中所需的 distribute。毫无疑问,distributesetuptools 之间的混淆导致了 pkg_resources 出现的问题,因为它们也是由它们提供的。

所以尝试用这种方式重新创建你的virtualenv:

virtualenv --distribute --no-site-packages /path/to/ve

这也会产生副作用,即不包括 Apple 随系统 Python 一起提供的第三方包。如果您真的需要它们,您可以使用 PYTHONPATH 重新添加它们,但最好安装单独的版本。

关于python - 为什么安装 python 包会破坏 setuptools 并导致找不到 pkg_resources?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8190620/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com