(标题图片借用 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