3

我有三个不同的 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

我使用了许多来自不同来源的软件包。我目前正在从 port (MacPorts)、easy_installpip(由easy_install安装)和 Mercurial 安装软件包。还有一些我必须从图像安装或从源代码构建。我对这些有更多的控制权。

问题是 easy_install 和 pip 似乎安装到一个位置 ( /Library/Frameworks/...) 而 MacPorts 安装到另一个位置 ( /opt/local/Library/Frameworks/...)。

我现在最好的行动是什么?删除/Library/Frameworks/.../python2.7并移动 easy_install 和 pip 到 MacPorts 之一/opt/local/...?链接两个目录?将 MacPorts 安装移动到/Library/Frameworks/...?

我怎样才能巩固这些蟒蛇?我已经尝试将两个站点包位置都放在我的路径中,但是只有某些包仅适用于一个 Python 而不是另一个,反之亦然,我需要它们一次全部可用。

4

4 回答 4

4

似乎您可以控制自己构建的东西。这就是我使用 pip 整合 macports 的方式:

我喜欢将Macports用于我所有的东西,所以我只是确保pipeasy_install构建到 macports 的 python 安装(在 中的那个/opt/local/...)。

您可以使用以下命令判断 pip 和 easy_install 将在何处安装:

readlink `which pip`

(那些是反引号)

如果要将 pip 安装到 macports 目录,请使用 macports 安装 pip:

sudo port install py-pip

然后,确保它which pip指向如下内容:

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

从下面的评论(感谢@Jonathan 和@Ned)你可以做同样的事情,easy_install但它的端口被称为py-distribute

sudo port install py-distribute

但据我所知,你永远不需要使用easy_install,因为任何可以easy_install编辑的东西都可以pip更好地编辑

注意端口说明:

askewchan@rock:Tracking {master *}$ port search *easy*install*
py-pip @1.2.1 (python, www)
    An easy_install replacement

askewchan@rock:Tracking {master *}$ port search py*distribute
py-distribute @0.6.35 (python, devel)
    Replacement for setuptools
于 2013-03-12T18:21:24.743 回答
1

虽然不是通用解决方案,但我使用 virtualenv 安装 Mercurial 和其他基于 Python 的应用程序。特别是, pip 和 easy_install 将仅安装到各自的虚拟环境中,不会弄乱任何系统文件夹。当然,缺点是我会复制一些包。优点是我有一个干净、自包含的环境,其中包含已知版本的 Python(对于 Mercurial 和其他关键任务应用程序而言,这对我来说更重要)。

另一个缺点是我需要将单个应用程序链接到我的个人 bin 目录或将虚拟环境的 bin 目录添加到我的路径中。(就我个人而言,我用一些简单的脚本来管理这个,这些脚本为我做符号链接。)

于 2013-03-12T20:41:30.593 回答
1

我建议为您的开发工作决定一个且只有一个 Python(就我个人而言,我使用 Python.org 的发行版)

  • 你不能摆脱 /Library/Frameworks - 这是默认的 OSX 之一,你可能会破坏
  • 在剩下的两个 Python 中,我假设一个是 Macports,另一个是 Python.org——你需要选择你想要的一个作为你的开发环境并坚持下去。

强烈建议不要使用pipeasy_install从一个 Python 为另一个安装模块。原因是编译选项可能存在差异。让某些包在 OSX 上正确编译可能已经够难了——如果你开始针对不同的二进制文件(可能支持不同的架构)进行编译,你只会更加头疼。

个人选择了以下路径:

  1. 我使用 Python.org 包进行所有开发。
  2. 在终端登录时,我运行 shell 脚本来优先考虑我的 Python 选择
  3. 我所有的项目都有自己的 virtualenv ,我禁用了系统包
  4. 当开始从事任何项目时,我倾向于有一个环境设置脚本。我只是输入go_myproject.source; 那cd是我到正确的目录并运行source /path/to/virtualenv/bin/activate以让我为该项目进行设置。

设置东西有一点点开销,但从那以后我一直在天堂。管理项目而不需要担心因一件事而杀死另一件事的依赖/升级是……幸福的。

于 2013-03-12T19:36:33.237 回答
-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
于 2013-03-12T18:04:03.900 回答