我有三种不同的Python 2.7:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
我使用了许多来自不同来源的软件包。我目前正在从端口(MacPorts), easy_install , pip (由 easy_install 安装)和Mercurial安装软件包。还有一些我必须从图像安装或从源代码构建。我对这些有更多的控制权。
问题是easy_install和pip似乎安装到一个位置(/Library/Frameworks/...
),而MacPorts安装到另一个位置(/opt/local/Library/Frameworks/...
)。
现在我最好的行动是什么?删除/Library/Frameworks/.../python2.7
并将easy_install和pip移至/opt/local/...
处的MacPorts一个?链接这两个目录?将MacPorts安装移至/Library/Frameworks/...
?
我如何巩固这些蟒蛇?我已经尝试将两个站点包位置放在我的路径中,但只有某些包只适用于一个Python而不是另一个,反之亦然,我需要它们一次全部可用。
答案 0 :(得分:4)
您似乎可以控制自己正在构建的东西。这就是我用pip整合macport的方法:
我喜欢使用 Macports 来处理我的所有内容,所以我只需要确保pip
和easy_install
构建到macports的python安装中({{1} }})。
您可以使用以下命令告知pip和easy_install将在何处安装:
/opt/local/...
(这些是反叛)
如果要将pip安装到macports目录,请使用macports安装pip:
readlink `which pip`
然后,确保sudo port install py-pip
指向类似的内容:
which pip
从下面的评论中(感谢@Jonathan和@Ned),您可以对askewchan@rock:~$ which pip
/opt/local/bin/pip
askewchan@rock:~$ readlink `which pip`
/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin/pip-2.7
执行相同操作,但其端口名为easy_install
:
py-distribute
但据我所知,您永远不需要使用sudo port install py-distribute
,因为anything that can be easy_install
ed can be pip
ed better。
请注意端口说明:
easy_install
答案 1 :(得分:1)
我建议您为开发工作决定一个且只有一个Python(个人而言,我使用Python.org发布)
我强烈建议不要使用一个Python中的pip
或easy_install
来为另一个Python安装模块。原因是编译选项可能存在差异。在OSX上正确编译某些软件包可能很难 - 如果你开始针对不同的二进制文件进行编译(可能支持不同的体系结构),那么你只会增加头痛。
我个人选择了以下路径:
go_myproject.source
; cd
我到了正确的目录并运行source /path/to/virtualenv/bin/activate
让我为该项目设置。在安装设备时会有一点点开销,但从那时起我就一直处于完全的天堂。管理项目而不需要担心因为杀死其他东西而导致的依赖/升级是......幸福。
答案 2 :(得分:1)
虽然不是一般解决方案,但我使用virtualenv安装Mercurial和其他基于Python的应用程序。特别是,pip和easy_install将仅安装到相应的虚拟环境,而不会使任何系统文件夹混乱。当然,缺点是我会复制一些软件包;我的优势在于我拥有一个干净,自包含的环境,其中包含已知版本的Python(对于像Mercurial和其他关键任务应用程序这样的东西对我来说更重要)。
另一个缺点是我需要将各个应用程序链接到我的个人bin目录,或者将虚拟环境的bin目录添加到我的路径中。 (就个人而言,我通过一些简单的脚本来管理它,为我做符号链接。)
答案 3 :(得分:-2)
我很想将所有python安装移动到一个地方并创建符号链接。 之后配置python环境以避免导入问题和模块的“可见性”。 尝试使用命令:
# easy_install
env PYTHONPATH=/custom/path easy_install –install-dir /custom/path
#pip
pip install --install-option="--prefix=$PREFIX_PATH" package_name