2012-09-23 56 views
1

我正在使用10.8.1(Mountain Lion)。MacPorts和bash PATH

升级到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的命令,我怀疑我只得到改回苹果版本通过解决潜在的问题回来。

对于纪录,~/.profile内容:

export PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/texbin 
+1

'.bashrc'怎么样?我不记得哪一个是在OS X上首先执行的。 – slugonamission

+0

'$ open .bashrc'给出'/user/ben/.bashrc文件不存在',显然这不是它! –

+0

你已经解决了python问题。还有哪些端口仍然不起作用?什么'echo $ PATH'显示在你的终端会话中?你打开了一个新的终端窗口吗?你有'.bash_profile'文件和'.profile'吗?如果是这样,前者将被bash优先选择。 –

回答

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 

顺便说一句,既不pip也不ipython通过苹果OS供应X系统Pythons,所以目前还不清楚你捆绑的OS X默认值是什么意思。也许你将这些版本安装到系统Python 2.7中。如果是这样,默认情况下,你会看到他们/usr/bin/python2.7和/或安装在/usr/local/bin/Library/Python/2.7

更新:之前的MacPorts提供了port select pip选项(如上面链接的MacPorts的问题要求),你应该能够有pip通过修改.profile在头部添加了Python框架bin目录执行的MacPorts版本

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 
+0

谢谢你的帮助。您希望我提供哪些更多信息?我自己将pip和ipython安装到了捆绑的Python上。例如,我希望能够在默认情况下运行MacPorts版本的pip,只需输入“$ pip”即可。 –

+0

我期待这种行为,因为MacPorts('/ opt/local')在PATH中首先出现。 –

+0

感谢您的更新。这解决了我遇到的大部分问题。 –