我使用的是Mac OSX 10.10.1。我通常使用brew或pip来安装所有东西。我注意到我的virtualenv总是抓住我所有本地安装的Python包。我通过删除$PYTHONPATH
配置文件中的~/.zshrc
变量来修复此问题。这解决了virtualenv抓住我所有Python包的问题,但是然后IPython找不到/usr/local/lib/python2.7/site-packages
中的内容。我最终找到了一种方法来解决IPython问题,方法是将/usr/local/bin/ipython
中的hashbang行更改为#!/usr/local/bin/ipython
,如this SO帖子中所建议的那样。据我所知,现在一切正常。
我的问题:
最好将所有内容安装到/Library/Python/2.7/site-packages
?或者在/usr/local/lib/python2.7/site-packages
中拥有一半的东西会更好吗?让一个人的包裹分开是一种精神分裂症。
我做了正确的事情是:a)删除我个人定义的$PYTHONPATH
变量,b)将#!/usr/bin/ipython
中的hashbang更改为#!/usr/local/bin/ipython
/usr/local/bin/ipython
文件?我的$PYTHONPATH
变量已设置为export PYTHONPATH="/usr/local/lib/python2.7/site-packages/":${PATH}
配置文件中的~/.zshrc
。
答案 0 :(得分:1)
最好尽可能在virtualenv中安装软件包(对于您正在处理的应用程序或项目)。这使得依赖项保持独立,因此您应该只在适当的时候全局安装(但通常不是因为依赖项是特定于项目的。)
但是要回答你的问题:某些依赖关系确实可能是系统范围内的,而其他依赖关系则属于virtualenv。让系统范围的Python,用户Python和virtualenv Python协同工作有点奇怪但是可以做到。尽量避免在各处散布你的依赖关系,因为这很难维护。结合brew / pip也是灾难的一个因素,因为他们并不总是彼此意识到并且确实会干扰。我将MacPorts(或Homebrew)用于非Python依赖项和Python解释器安装以及所有Python包的pip。
听起来不对:你不应该编辑文件的hashbang(当然,除非作为一个带有bug的软件包的解决方法)。更新PYTHONPATH变量是正常的,因为许多人在他们的shell配置文件中有这样的修改。您对该文件的编辑是不可持续的,因为升级或其他更改可能会再次破坏。如果您使用的是正确打包的版本,则不必指向另一个Python解释器。