【发布时间】:2014-06-16 16:17:09
【问题描述】:
我使用Homebrew 来管理我的大部分软件安装,但我发现使用 Python 很复杂,尤其是使用 virtualenv(和 virtualenvwrapper)以隔离方式管理包。问题是我发现 virtualenv 将 python 符号链接到通过 Homebrew 安装的当前 Python 版本,如下所示:
~/.pip/virtualenvs/httpie
├── include
│ └── python2.7 -> /usr/local/Cellar/python/2.7.7_2/Frameworks/Python.framework/Versions/2.7/include/python2.7
└── lib
└── python2.7
├── UserDict.py -> /usr/local/Cellar/python/2.7.7_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py
├── UserDict.pyc
├── _abcoll.py -> /usr/local/Cellar/python/2.7.7_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_abcoll.py
├── _abcoll.pyc
├── _weakrefset.py -> /usr/local/Cellar/python/2.7.7_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/_weakrefset.py
├── _weakrefset.pyc
├── abc.py -> /usr/local/Cellar/python/2.7.7_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/abc.py
├── abc.pyc
├── codecs.py -> /usr/local/Cellar/python/2.7.7_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/codecs.py
├── codecs.pyc
[...]
每当通过自制程序更新 Python 时,这会导致各种链接问题:
$ http --head http://flic.kr/p/dQm85A
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/3dweb/.pip/virtualenvs/httpie/bin/python2.7
Reason: image not found
Trace/BPT trap: 5
当我创建新的 virtualenv 时,如何将 virtualenv 设置为始终(自动)指向系统 Python?
【问题讨论】:
-
使用系统 Python 的替代方法是使用选项
--always-copy和mkvirtualenv。这将复制您的 Python 二进制文件而不是符号链接,这可能会解决您在更新 Homebrew Python 时遇到的问题。 -
好建议@HuuNguyen。
-
是的,效果很好!我确实在 mkvirtualenv 的 --help 页面中注意到了它,并认为它可以,但决定先询问。当然,如果您不介意复制大约 20MB 的二进制文件和库。
标签: python macos python-2.7 homebrew