MacPorts和bash PATH

时间:2012-09-23 23:18:46

标签: bash macports

我正在使用10.8.1(Mountain Lion)。

升级到Mountain Lion后,我的部分MacPorts停止工作。为了更轻松的生活,我只是清除了/opt/local/并重新安装了最新版本的MacPorts,然后是端口本身。

这有副作用,我使用的许多端口已经回到捆绑的OS X默认值。我打开.profile以确保/opt/local/bin在PATH中排在第一位,但这并没有解决问题。

我怀疑port select的输出是一个症状:

$ port select python
Available versions for python:
    none (active)  # shouldn't the bundled version be here?
    python27
    python32

$ which python
/usr/bin/python

更改活动端口(sudo port select --set python python27)可解决问题,但并非所有端口都与port select一起使用。有谁知道这里发生了什么?

编辑:我应该澄清一点,我不认为这是一个完整的解决方案 - 您应该能够使用sudo port select --set python python25-apple之类的命令更改回Apple版本,我怀疑我只会通过解决根本问题来回来。

记录中,~/.profile

的内容
export PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/texbin

1 个答案:

答案 0 :(得分:3)

如果没有更多信息,很难猜出您所看到的行为以及您希望看到的行为。 MacPorts确实为您提及的某些命令提供port select选项,例如pythonipython,但does not yet for pip。通常,MacPorts安装具有特定于版本的后缀的Python脚本,因此独立于port select选项,您应该找到带有后缀的命令,例如:

$ port select --list ipython
Available versions for ipython:
    ipython27
    ipython32 (active)
    none
$ which ipython
/opt/local/bin/ipython
$ which ipython-2.7
/opt/local/bin/ipython-2.7
$ port select --list pip
Warning: Unable to get active selected version: The specified group 'pip' does not exist.
Error: The 'list' command failed: The specified group 'pip' does not exist.
$ which pip
$ which pip-2.7
/opt/local/bin/pip-2.7
顺便说一下,Apple和OS X系统Pythons都没有提供pipipython,因此不清楚捆绑的OS X默认值是什么意思。也许您已将这些版本安装到系统Python 2.7中。如果是这样,默认情况下,您会看到/usr/bin/python2.7和/或安装在/usr/local/bin/Library/Python/2.7中。

更新:在MacPorts提供port select pip选项(按照上面链接的MacPorts问题中的要求)之前,您应该可以通过修改pip执行MacPorts版本你的.profile将Python框架bin目录添加到路径的开头:

export PATH=/opt/local/Library/Frameworks/Python.framework/Versions/Current/bin:/opt/local/bin:...

更新2014-04: MacPorts现在提供port select pip选项,因此您不再需要执行PATH黑客攻击。

$ sudo port select pip
Available versions for pip:
    none (active)
    pip27
    pip33
$ sudo port select pip pip27
Selecting 'pip27' for 'pip' succeeded. 'pip27' is now active.
$ hash
$ which pip
/opt/local/bin/pip