这部分是一个问题,部分是我自己在遇到此错误时发现的问题:
(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模块(事实上,它也缺少很多其他东西)
[配置]
操作系统:Mac OS X Lion
Python 2.7.1(r271:86832,2011年6月16日,16:59:05)
virtualenv v1.6.1
使用virtualenvwrapper使用需求文件安装这些软件包的全新虚拟环境:
善变== 1.9.3
Django的&GT = 1.3.1
的MySQL-蟒&GT = 1.2.3
狮身人面像
的wsgiref pylint的
蛋黄
dbgp
Django的调试工具栏里
南部
我能够使用pip来安装其他软件包,但由于某些原因它似乎打破了这个安装。
[问题]
- 人们认为这个包装的安装过程是个错误吗?
- 或者,setuptools是个错误吗?
- 或者,我是不是错误地安装了它?
[额外注意]
我可以附加整个输出的文件,但它是一个长文件,我决定只提取我觉得相关的段。如果您想查看完整文件,我也可以上传。
答案 0 :(得分:3)
我不确定所有你的问题,但至少有一个问题是由loremipsum
包导致pypsum
包的依赖。出于某种原因,在setup.py
的{{1}}文件中,作者包含loremipsum
包的具体要求:
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
。 Apple提供的系统Pythons OS X 10.6和10.7已预装了distribute
版本,因为它们位于非标准系统目录中,所以不能轻易修补。在OS X上使用setuptools
时的一个简单解决方法似乎也是使用其virtualenv
选项,这将阻止系统Python中的no-site-packages
版本干扰所需的setuptools
in distribute
。毫无疑问virtualenv
和distribute
之间的混淆导致setuptools
出现问题,因为它们也是由pkg_resources
提供的。
因此,请尝试以这种方式重新创建virtualenv
:
virtualenv --distribute --no-site-packages /path/to/ve
这也会产生副作用,即不包括Apple随系统Python提供的第三方软件包。如果你确实需要,可以用PYTHONPATH
添加它们,但最好安装不同的版本。