繁体   English   中英

安装Homebrew Python后Python包在错误的位置?

[英]Python packages in wrong location after installing Homebrew Python?

在将Homebrew的Python安装到具有已建立的Apple Python的系统之后, sys.path使用Homebrew的Python列出的最后一个条目是

/Library/Python/2.7/site-packages
/usr/local/lib/python2.7/site-package

这与我期望的顺序相反。 不应该先搜索Homebrew的软件包吗? (事实上​​, 它不应该唯一搜索到的地方吗?)这就是文档中隐含的内容 它在哪里设置,我怎么能(或应该)改变它?

或者,这是Brewed Python的工作方式吗? 它是否旨在防止重复的软件包,并假设系统site-packages中的任何软件包都要保留在那里,除非明确卸载然后安装(进入Brew); 与外pipsetuptools 复制(在酿造Python的路径放在第一)。

这是预期的行为。 它背后的基本原理是你可以继续使用旧的已安装模块,尽管你现在正在使用一个新的自制Python。

现在这有一些缺点,例如像numpy这样的库不能在不同的Python版本中工作,所以如果你安装了numpy,它将从旧系统的site-packages导入并且不起作用。

至少有两种方法可以更改sys.path

使用.pth文件:

Python将从一些内置位置中选择它(例如:〜/ Library / Python / 2.7 / lib / python / site-packages / homebrew.pth)。 这附加到sys.path ,这不是理想的,但有一个优点,它不会被Python 3选中。它是目前推荐的方法 你可以用:

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM