Python 在 Mac OSX 上找不到 distutils_path

2024-04-21

我一直在使用 virtualenv + pip 进行 python 开发。我不确定发生了什么,但每当我尝试运行命令行工具或导入库时,我都会突然收到以下错误消息:

Traceback (most recent call last):
  File "/Users/kyle/.virtualenvs/fj/bin/pip", line 4, in <module>
    import pkg_resources
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 698, in <module>
    the platform/python version defined at initialization are added.
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 701, in Environment
    search_path = sys.path
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 96, in get_supported_platform
    'Environment', 'WorkingSet', 'ResourceManager',
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg/pkg_resources.py", line 221, in get_build_platform
    if provDarwin:
  File "/Users/kyle/.virtualenvs/fj/lib/python2.6/distutils/__init__.py", line 14, in <module>
    exec open(os.path.join(distutils_path, '__init__.py')).read()
IOError: [Errno 2] No such file or directory: '/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/distutils/__init__.py'

据我所知,Python 正在试图找到distutils_path在Mac OSX系统版本Python中,not我的 virtualenv 版本应该是这样。

不知道为什么会突然发生这种情况。也许是最近的 OSX 更新?另一种可能性是我的硬盘快要坏了,所以苹果给了我一个新硬盘并运行了迁移助手。也许有些东西没有正确传输?


我遇到过这个distutils/__init__.py转换到 OS X 10.7 Lion(从 OS X 10.5 Leopard)并使用迁移助手时出现问题。我已经安装了 Xcode 3.2.6——从而解决了缺少 install_name_tool 的问题。

迁移助手带来了我以前的 virtualenv,但由于它们基于 Leopard 的 Python 2.5,我想我需要使用当前系统 Python 2.7 重新创建它们。

easy_install 已经在 PATH 中了——可能是因为它与 Lion 的 Python 2.7 捆绑在一起;这似乎不太可能是迁移助手的结果。我使用 easy_install 来安装 virtualenv。

在我看来,这个问题与 Xcode 或缺乏 Xcode 没有任何关系。这是通过 virtualenv 命令放置在新虚拟环境中的文件中的特殊行:


  File "/path/to/my/virtualenv/lib/python2.7/distutils/__init__.py", line 16, in 
    exec(open(os.path.join(distutils_path, '__init__.py')).read())
IOError: [Errno 2] No such file or directory: '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/__init__.py'

问题是,在与 Lion 捆绑在一起的 Python 2.7 安装中,该库不附带 .py 源文件。该目录包含 .pyc 和 .pyo 文件,但不包含 .py 文件。 virtualenv 似乎并不期望这一点。

我的解决方法是下载 Python 2.7 源代码:
http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2 http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2

并打开包装distutils/__init__.py进入预期的地方:
sudo tar xvjf ~/Downloads/Python-2.7.2.tar.bz2 --strip-components=2 -C /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7 Python-2.7.2/Lib/distutils/__init__.py

这允许 virtualenv 成功完成,并且生成的 Python 解释器似乎可以运行。

鉴于与 Lion 捆绑在一起的 Python 2.7 库是在没有源代码的情况下安装的,更改 virtualenv 来尝试以下任一选项似乎很有用distutils/__init__.py or distutils/__init__.pyc ?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python 在 Mac OSX 上找不到 distutils_path 的相关文章

随机推荐