在将Homebrew的Python安装到具有已建立的Apple Python的系统之后,sys.path使用Homebrew的Python 列出的最后条目是
/Library/Python/2.7/site-packages
/usr/local/lib/python2.7/site-package
Run Code Online (Sandbox Code Playgroud)
这与我期望的顺序相反.不应该先搜索Homebrew的软件包吗?(事实上,它不应该是唯一搜索到的地方吗?)这就是文档中隐含的内容.它在哪里设置,我怎么能(或应该)改变它?
或者,这是Brewed Python的工作方式吗?它是否旨在防止重复的包并假设系统中的任何包site-packages都要保留在那里,除非明确卸载然后安装(进入Brew); 有例外pip和setuptools其被复制(在酿造Python的路径放在第一).
ely*_*ase 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不会选择它的优点.它是目前推荐的方法.你可以用:
echo "$(brew --prefix)/lib/python2.7/site-packages" > ~/Library/Python/2.7/lib/python/site-packages/homebrew.pth
Run Code Online (Sandbox Code Playgroud)
设置PYTHONPATH:
这是前提sys.path,它的缺点是所有python版本都是全局的,所以如果你打算使用不同的python版本,不建议这样做.你可以通过添加到你的.bash_profile:
export PYTHONPATH=`brew --prefix`/lib/python2.7/site-packages:$PYTHONPATH
Run Code Online (Sandbox Code Playgroud)
我个人使用选项2和homebrew-python(我现在使用并推荐Anaconda).我的理由是我当时并不关心系统的Python或Python 3.
| 归档时间: |
|
| 查看次数: |
9890 次 |
| 最近记录: |