Kyl*_*Fox 21 python macos distutils virtualenv
我一直在使用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'
Run Code Online (Sandbox Code Playgroud)
从我可以破译的内容来看,Python试图distutils_path在Mac OSX系统版本中找到Python,而不是像我应该的那样的virtualenv版本.
不知道为什么这突然发生了.也许是最近的OSX更新?另一种可能性是我的硬盘驱动器即将死亡,因此Apple给了我一个新硬盘并运行了迁移助手.也许某些东西没有正确转移?
小智 33
我distutils/__init__.py在转换到OS X 10.7 Lion(来自OS X 10.5 Leopard)和使用迁移助手时遇到了这个问题.我已经安装了Xcode 3.2.6 - 从而解决了缺少的install_name_tool问题.
迁移助手带来了我之前的virtualenvs,但由于它们基于Leopard的Python 2.5,我想我需要用当前的系统Python 2.7重新创建它们.
easy_install已经在PATH中 - 可能是因为它与Lion的Python 2.7捆绑在一起; 它似乎不太可能是迁移助理的结果.我使用easy_install来安装virtualenv.
在我看来,这个问题与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'
Run Code Online (Sandbox Code Playgroud)
问题是,在与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
并打开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或者似乎都有用distutils/__init__.pyc吗?
Joh*_*Mee 22
> cd /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/distutils/
> sudo touch __init__.py
Run Code Online (Sandbox Code Playgroud)
Lion上开箱即用的python没有python源 - 只是编译的pyc/pyo文件.然而,virtualenv寻找distutils源文件只是为了确认它在哪里.原来我们需要做的就是触摸它正在寻找的文件.
积分属于"npdoty"和"Nat Goodspeed".
| 归档时间: |
|
| 查看次数: |
8174 次 |
| 最近记录: |