为什么安装python的setuptools不会导致pku中断?

2024-06-28 10:53:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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

(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一起使用时,出现了这个问题。在

^{pr2}$

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

我复制了安装过程中的输出,并开始仔细查看,似乎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_资源模块(事实上,它还缺少很多其他东西)

[设置]

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安装其他软件包,但由于某些原因,它似乎与这个安装中断了。在

[问题]
-人们是否认为这是安装过程中的错误?
-或者,这是setuptools的错误吗?
-或者,我只是安装不正确?

[额外说明]
我可以用整个输出附加文件,但它是一个很长的文件,我决定只提取我觉得相关的片段。如果你想看完整的文件,我也可以上传。在


Tags: pipnameyouregglibpackages错误site
1条回答
网友
1楼 · 发布于 2024-06-28 10:53:09

我不确定您的所有问题,但至少有一个问题是由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' }

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

因此,请尝试通过以下方式重新创建您的virtualenv

^{pr2}$

这也会产生副作用,即不包括苹果随系统Python提供的第三方软件包。如果您确实需要它们,您可以使用PYTHONPATH将它们添加回来,但最好安装单独的版本。在

相关问题 更多 >