【问题标题】:MacPorts and the bash PATHMacPorts 和 bash 路径
【发布时间】:2012-09-15 10:41:29
【问题描述】:

我正在使用 10.8.1 (Mountain Lion)。

升级到 Mountain Lion 后,我的一些 MacPort 停止工作。为了更轻松的生活,我只是清除了/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

【问题讨论】:

  • .bashrc 怎么样?我不记得在 OS X 上首先执行的是哪个。
  • $ open .bashrc 给了The file /Users/ben/.bashrc does not exist,所以显然不是这样!
  • 您已经解决了 python 问题。还有哪些端口仍然无法使用? echo $PATH 在您的终端会话中显示什么?您是否打开了一个新的终端窗口?你有.bash_profile.profile 的文件吗?如果是这样,bash 将首选前者。
  • 尝试 source ~/.profile,或打开一个新的 Terminal.app 窗口。尝试: echo $PATH 获取 PATH 的当前值。
  • @NedDeily $ echo $PATH 给了我写在.profile 中的路径。我没有.bash_profile 文件。我有很多端口,其中许多可以工作,但有些不能。我认为大多数(如果不是全部)不起作用的与 Python 相关:pip、ipython 等

标签: bash macports


【解决方案1】:

如果没有更多信息,就很难猜出您看到了什么行为以及您期望看到什么。 MacPorts 确实为您提到的一些命令提供了port select 选项,例如pythonipythondoes 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

顺便说一句,pipipython 都不是由 Apple 提供的 OS X 系统 Python,所以不清楚捆绑的 OS X 默认值是什么意思。也许您将这些版本安装到系统 Python 2.7。如果是这样,默认情况下,您会看到它们带有/usr/bin/python2.7 和/或安装在/usr/local/bin/Library/Python/2.7 中。

更新:在 MacPorts 提供 port select pip 选项(如上面链接的 MacPorts 问题中所要求的那样)之前,您应该能够通过修改您的 .profilepip 执行 MacPorts 版本在路径的开头添加 Python 框架 bin 目录:

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

2014-04 更新:MacPorts 现在确实提供了port select pip 选项,因此您不再需要进行PATH hack。

$ 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

【讨论】:

  • 感谢您的帮助。您希望我提供哪些进一步的信息?我自己将 pip 和 ipython 安装到捆绑的 Python 上。例如,我希望能够在默认情况下运行 pip 的 MacPorts 版本,只需键入 $ pip
  • 我期待这种行为,因为 MacPorts (/opt/local) 在 PATH 中排在第一位。
  • 感谢您的更新。这解决了我遇到的大部分问题。
  • 感谢有关路径的提示。
  • @NedDeily 就我而言,我通过 pip 安装了一个应用程序,该应用程序安装到了/opt/local/Library/Frameworks/Python.framework/Versions/2.7/bin 的可执行文件中。因此port select 对我不起作用。
猜你喜欢
  • 2012-01-16
  • 2014-08-30
  • 2017-05-27
  • 2014-09-18
  • 2014-05-19
  • 2023-03-03
  • 1970-01-01
  • 2012-02-17
  • 2014-10-16
相关资源
最近更新 更多