python - Homebrew 在 vi​​rtualenv 中断开了到 Python 的链接

标签 python virtualenv homebrew

我最近运行 (OS X 10.6.8) brew updatebrew upgrade 并且我在一个现在失败的 virtualenv 中工作。我试过:

$ brew unlink python && brew link python
Unlinking /usr/local/Cellar/python/2.7.8_1... 38 symlinks removed
Linking /usr/local/Cellar/python/2.7.8_1... 35 symlinks created

但是在 virtualenv 中,我仍然得到这个:

$ python --version
dyld: Library not loaded: @executable_path/../.Python
  Referenced from: /Users/admin/.virtualenvs/saves/bin/python
  Reason: image not found
Trace/BPT trap

我找到了另一篇关于此的帖子,但解决方案似乎仍不清楚。我很着急,所以卸载了 Python 版本并运行了 brew doctor,它返回了上面的错误作为警告:

sh: line 1: 40991 Trace/BPT trap          python -V 2>&1

然后brew install python。在 virtualenv 中仍然出现上述错误。

相关问题和关于 debugfix 的帖子不是确定的:

Broken references in Virtualenvs
dyld-library-loaded-executable_path-python

更新

创建一个新的 virtualenv 解决了这个特定问题。

最佳答案

我会将我的评论作为答案,以便将来遇到相同问题的访问者清楚。

您提供的相关链接确切地告诉了您问题所在:因为 virtualenv 创建了指向文件的符号链接(symbolic link),而 homebrew 在使用不同名称的文件进行升级时替换了这些文件,因此您最终会得到断开的链接。 两个相关链接都给出了解决方法的建议:一个是创建一个新的 virtualenv,另一个是修复损坏的链接。

总而言之,当 Python 在 homebrew 中再次升级时,您可能会遇到同样的情况。

这显然是 realised by the virtualenv developers ,还有一个选项 --always-copy 可以避免这样的问题:

$ virtualenv --help
Usage: virtualenv-3.4 [OPTIONS] DEST_DIR

Options:
  ...

  --always-copy         Always copy files rather than symlinking.

  ...

这应该可以防止将来通过 Homebrew 升级 Python 时出现问题。当然,你的 virtualenv 将有一个旧版本的 Python。有时这可能正是您想要的。

关于python - Homebrew 在 vi​​rtualenv 中断开了到 Python 的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034246/

相关文章:

homebrew - 更改 homebrew-cask 安装目录

python - 如何在 Mac Homebrew 软件上更新 python3

python - 使用 gunicorn 时未加载虚拟环境路径

python - 如何使用 Python 创建一个新的文本文件

python - 用于选择二维数组元素的矢量化代码

python - Python 中的 USBTMC

python - 为什么要在Python的虚拟环境中创建requirements.txt文件?

python - pip install numpy 的问题 - RuntimeError : Broken toolchain: cannot link a simple C program

macos - Homebrew brew doctor 失败消息

python - 我可以加入不同速度或延迟的 gif 吗?