(标题图片借用 PYTHON ON MACOS: BEST PRACTICES 的标题图,这篇文档也是关于MacOS上面运行python和virtualenv的。)
(本篇日志为 How to fix your Python virtualenv after a Homebrew Python upgrade 的翻译文档)
你在使用Homebrew管理你的OS X上面的Python嘛?最近有没有升级过Python?
我遇到的情况是Python 3的一个小更新:从3.4.2到3.4.3。 这个升级足够让virtualenv里面的符号连接(symbolic links)失效了。
例如
~: cd ~/src/my_app
~/src/my_app: source venv/bin/activate
[venv] ~/src/my_app: python
dyld: Library not loaded: @executable_path/../.Python
Referenced from: /Users/jeremycade/src/my_app/env/bin/python
Reason: image not found
Trace/BPT trap: 5
正如我提到的那样,virtualenv内部的符号连接都指向了Homebrew安装的Python, 升级之后这些符号连接都指向了错误的地方。 解决方法是删除然后重建这些符号连接。
首先,我们需要确保你的virtualenv没有生效(active)。
[venv] ~/src/my_app: deactivate
然后,删除这些错误的符号连接。
~/src/my_app: find venv -type l -delete
这里我使用了OS X自带的BSD find 命令。
最后一步,重建你的virtualenv。
~src/my_app: virtualenv venv
青蛙注
青蛙没有详细的研究这个问题。
但是感觉上应该是
virtualenv
这个包引入的,如果使用python3内建的venv module,
python3 -m venv VENV_DIR
这种方式创建virtualenv的时候,并不会创建符号连接。
所以结论是,在MacOS上尽量使用python内置的venv模块, 而不是使用virtualenv包。
Comments
comments powered by Disqus