【问题标题】:Locate MacPorts package?找到 MacPorts 包?
【发布时间】:2011-05-27 01:49:27
【问题描述】:

我刚刚通过 MacPorts 安装了 py27-numpy 包,当我使用此命令时,python 将找不到该模块:import scipy

我使用了help('modules') 命令,scipy 端口没有出现。

显然路径配置不正确,或者 MacPorts 没有安装在正确的位置,但无论哪种方式,知道这个包的安装位置都可以解决我的问题。

在哪里可以找到 MacPorts 安装包 py27-scipy 的路径?

echo $PATH 命令的输出:

/Library/Frameworks/Python.framework/Versions/2.7/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr /local/bin:/usr/X11/bin:目录/bin

我在这些地方都找不到包裹。

感谢您的帮助。

【问题讨论】:

  • PATH 环境变量只是让您的 shell(可能是 bash(1))在没有限定路径名的情况下查找要执行的程序:cat 而不是 /bin/catftp 而不是/usr/bin/ftp 等(它也被 execlp(3)execvp(3) 函数使用,但这种使用不如 shell 频繁。)它与 Python 模块搜索路径无关,PYTHONPATH。有关PYTHONPATH 的更多信息,请参阅python(1),有关PATH 的信息,请参阅bash(1)
  • 对 Stack Overflow 来说真是个蹩脚的问题...

标签: python macports


【解决方案1】:

要查找已安装组件的位置,请使用contents 子命令:

port contents py27-numpy

至于让python找包,见@fardjad's response

【讨论】:

  • 请注意,py27-numpy 包中的所有内容(f2py 的符号链接除外)始终安装在 MacPorts python2.7 实例中。所以,不管 py27-numpy 安装在哪里,关键是知道如何调用 MacPorts python2.7。
  • 你的回答也很有帮助,如果可以的话,我会检查两个。
【解决方案2】:

您的 PATH 不正确。它似乎正在选择另一个 Python 2.7,可能是使用 python.org 或其他地方的二进制安装程序安装的,而不是 MacPorts 安装的。尝试从 PATH 中删除 /Library/Frameworks/Python.framework/Versions/2.7/bin 或直接调用 MacPorts Python:

/opt/local/bin/python2.7

【讨论】:

  • 你也可以使用python_select来设置默认python或者你可以调用这个命令:sudo port select --set python python27
  • MacPorts python_select 在 /opt/local/bin 中为 python 设置了一个符号链接,因此如果 /Library/Frameworks/Python.framework/Versions/2.7/bin 在 PATH 中排在第一位,则无济于事。
  • 啊,是的,没有注意到 OP 的 PATH 输出。
【解决方案3】:

MacPorts 应该默认在 /opt/local/Library/Frameworks/Python.framework/2.7/site-packages 中安装 Python 包。所以请确保在您的.profile 文件中设置$PYTHONPATH 环境变量:

export PYTHONPATH="/opt/local/Library/Frameworks/Python.framework/Versions/2.7/site-packages"

【讨论】:

  • 这不是 MacPorts 安装东西的地方。
  • @Ned Deily 它在我的机器上这样做:)
  • 我不记得我是否更改了MacPorts 安装配置,但这不会成为问题,因为 OP 可以使用contents 找到位置(Jeremy W. Sherman 回复)。
  • 然后您更改了它的默认值,或者您正在通过环境变量或类似 .pydistutils.cfg 的东西设置配置变量。 MacPorts Python 是框架构建,默认站点包目录位于 /opt/local/Library/Frameworks/Python.framework/...
  • 但问题无疑是 OP 使用了错误的 Python。 MacPorts py27-scipy 包会导致 MacPorts 安装自己的 Python,并且它不在 /Library/Frameworks/ 中。
【解决方案4】:
sudo port select --set python python27

是安装port的python系统范围的最佳答案

【讨论】:

  • 别忘了选对pip也:sudo port select --set pip pip27
【解决方案5】:

由于 Homebrew 只使用最新的 Mac 系统版本,而 MacPorts 用于介于两者之间的其他版本,我一直很困惑,直到找到python locations differ depending on the installer

这是一个自以为是的提示:为您的项目使用 virtualenvs,不要使用 MacPorts 更改您的默认版本。我不会也不想记得在某事中间升级我的 python,所以我依赖 virtualenvs。在电脑上选择并找到python版本,然后mkvirtualenv --python=/found/u/python3.X getawesome

【讨论】:

    【解决方案6】:

    基于Jeremy W. Sherman's answer

    我检查了我的 python 版本

    python --version
    Python 3.8.5
    

    和位置:

    which python
    /opt/local/bin/python
    

    然后尝试:

    sudo port contents python38 
    

    其中列出了 7285 行:

    Port python38 contains:
      /Applications/MacPorts/Python 3.8/IDLE.app/Contents/Info.plist
      /Applications/MacPorts/Python 3.8/IDLE.app/Contents/MacOS/IDLE
      /Applications/MacPorts/Python 3.8/IDLE.app/Contents/MacOS/Python
      /Applications/MacPorts/Python 3.8/IDLE.app/Contents/PkgInfo
      ...
      /opt/local/share/man/man1/python3.8.1
    

    将其与fardjad's answer 结合会导致:

    sudo port contents python38 | grep site-packages
    

    输出:

    /opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/README.txt
    

    因为我们需要修改命令的目录:

    dirname $(sudo port contents python38 | grep site-packages)
    

    给出所需的目录:

    /opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages
    

    所以有可能以单线结束:

    ma​​cports 中的单行 PYTHONPATH 设置:

     export PYTHONPATH=$(dirname $(sudo port contents python38 | grep site-packages))
    

    我们可以检查结果:

    echo $PYTHONPATH
    /opt/local/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages
    

    作为参考,请查看用于设置 PATH 的 Eclipse Liclipse python IDE 对话框的外观 - 您可能希望为完全指定的 PYTHONPATH 包含更多目录。

    【讨论】:

      猜你喜欢
      • 2013-03-25
      • 2011-09-01
      • 2014-10-16
      • 2020-10-10
      • 2011-12-05
      • 2015-12-18
      • 2011-02-13
      • 2015-07-17
      • 1970-01-01
      相关资源
      最近更新 更多