将Homebrew的Python安装到具有已建立的Apple Python的系统上之后,sys.path
使用Homebrew的Python列出的最后一个条目
/Library/Python/2.7/site-packages
/usr/local/lib/python2.7/site-package
这与我期望的顺序相反。不应该首先搜索Homebrew的软件包吗? (事实上,shouldn't it是仅搜索的地方?)那是什么implied in the documentation。它在哪里设置,我怎么能(或应该)改变它?
或者,这是Brewed Python的工作方式吗?它是否设计为防止重复包并假设系统site-packages
中的任何包都要留在那里,除非明确卸载然后安装(到Brew);除了 重复的pip
和setuptools
之外(并且首先放入Brewed Python的路径中)。
答案 0 :(得分:10)
这是预期的行为。它背后的基本原理是你可以继续使用旧的已安装模块,尽管你现在正在使用一个新的自制Python。
现在这有一些缺点,例如像numpy这样的库,不会在不同的Python版本中工作,所以如果你安装了numpy,它将从旧系统导入site-packages
并且不会工作。
至少有两种方法可以更改sys.path
:
使用.pth
文件:
Python将从一些内置位置中选择它(例如:〜/ Library / Python / 2.7 / lib / python / site-packages / homebrew.pth)。这附加到sys.path
这不是理想的,但其优点是它不会被Python 3选中。它目前是recommended method。您可以通过以下方式实现此目的:
echo "$(brew --prefix)/lib/python2.7/site-packages" > ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth
设置PYTHONPATH
:
这是sys.path
的前缀,它的缺点是所有python版本都是全局的,所以如果你打算使用不同的python版本,不建议使用它。您可以通过添加到.bash_profile
:
export PYTHONPATH=`brew --prefix`/lib/python2.7/site-packages:$PYTHONPATH
我个人使用选项2和homebrew-python(我现在使用并推荐Anaconda)。我的理由是我当时并不关心系统的Python或Python 3。