<p>我在转换到OSX10.7Lion(来自OSX10.5Leopard)并使用迁移助手时遇到了这个问题。我已经安装了Xcode 3.2.6——因此解决了缺少安装名工具的问题。</p>
<p>Migration Assistant带来了我以前的virtualenv,但是由于它们基于Leopard的Python 2.5,我想我需要用当前的系统python2.7重新创建它们。</p>
<p>easy_install已经走上了正轨——可能是因为它与Lion的Python2.7捆绑在一起;它似乎不太可能是迁移助手的结果。我用easy_install安装了virtualenv。</p>
<p>在我看来,这个问题与Xcode或缺少Xcode没有任何关系。这是virtual env命令在新虚拟环境中放置的文件中的特殊行:</p>
<pre><code>
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'
</code></pre>
<p>问题是,在与Lion捆绑的Python2.7安装中,库中没有.py源文件。该目录包含.pyc和.pyo文件,但不包含.py文件。virtualenv似乎并不期望如此。</p>
<p>我的解决方法是下载Python2.7源代码:<br/>
<a href="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</a></p>
<p>并将<code>distutils/__init__.py</code>解压缩到预期位置:<br/>
<code>
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 <code>Python-2.7.2/Lib/distutils/__init__.py</code>
</code></p>
<p>这允许virtualenv成功完成,并且生成的Python解释器似乎正在运行。</p>
<p>考虑到与Lion捆绑在一起的Python 2.7库是在没有源代码的情况下安装的,因此将virtualenv更改为尝试<code>distutils/__init__.py</code>或<code>distutils/__init__.pyc</code>似乎很有用?</p>