我遇到过这个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
?