【问题标题】:Python OSX $ which Python gives /Library/Frameworks/Python.framework/Versions/2.7/bin/pythonPython提供的Python OSX $ /Library/Frameworks/Python.framework/Versions/2.7/bin/python
【发布时间】:2014-06-13 06:54:41
【问题描述】:

您好,我正在尝试与 python 一起运行 twisted,但 python 找不到 twisted

我确实成功运行了 $pip install twisted,但它仍然不可用。

ImportError: No module named twisted.internet.protocol

似乎大多数人在 /usr/local/bin/python 都有 $which python

但我得到 /Library/Frameworks/Python.framework/Versions/2.7/bin/python

这可能是问题吗?如果是这样,我该如何更改 PATH 环境?

【问题讨论】:

  • 你可能已经完蛋了。从操作系统供应商安装材料重新安装,下次仅使用 virtualenv 安装新的 Python 包。
  • 您没有足够的信息在这里找到真正的答案。至少,请包括您的 OS X 版本(终端中 sw_vers 的输出)您的 Python 版本和构建信息(您在终端中键入 python 时获得的输出)以及您的任何 Python 包的列表已经安装了系统安装程序(pkgutil --pkgs | grep -i python 应该是近似的)。

标签: python macos python-2.7 twisted


【解决方案1】:

我也得到了ImportError: No module named xxx,尽管我做了pip install xxxpip2 install xxxpip2.7 install xxx 为我工作。这将它安装在 python 2.7 目录中。

【讨论】:

    【解决方案2】:

    没关系。 Python 可能安装在您计算机的多个位置。 当你拿到新的 Mac 时,默认的 python 目录可能是

     'usr/bin/python2.7'
    

    你也可以有一个目录

    'System/Library/Frameworks/Python.framework/Versions/2.7/bin/python'
    

    第一个是第二个的符号链接。

    如果你使用 HomeBrew 安装 python,你可能会得到一个目录

    'usr/local/bin/python2.7'
    

    你也可以有一个目录

    'Library/Frameworks/Python.framework/Versions/2.7/bin/python'
    

    这正是我的目录所在的位置。

    第二个和第四个的区别,你可以在这里找到 Installing Your Framework

    在您的问题中,正如您提到的 pip install 成功,但已安装的软件包仍然不可用。我可能猜想您的 pip 目录不在您的默认 python 目录中,并且软件包安装在您的 pip 目录所在的位置。 (请使用'which pip'查看)

    比如在我的电脑中,默认的pip目录是

    /Library/Frameworks/Python.framework/Versions/2.7/bin/pip
    

    不过,我在 usr/local/bin 中也有 pip。

    所以,我通过“pip install”安装的所有软件包都存储在

    /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
    

    希望能解决您的疑问。类似的事情也发生在我身上,我花了整整一夜才弄明白。

    解决方法如下: 使用PYTHONPATH="/usr/local/lib/python2.7/site-packages:$PYTHONPATH"修改你的python目录,或者修改你的pip目录。 不过,我会推荐一个更好的方法,使用 virtualenv。这可以隔离 Python 环境,并可以帮助您轻松地为每个项目设置包。

    【讨论】:

      【解决方案3】:

      在终端还好我终于发现了:

      打开位于您的用户根目录下的 .bash_profile(只需在终端中执行 $cd 即可前往那里)并添加路径为twisted 的位置

      PYTHONPATH="/usr/local/lib/python2.7/site-packages:$PYTHONPATH" 
      export PYTHONPATH
      

      【讨论】:

      • 当你继续在那台机器上安装 python 东西时要小心,这不是预装 OS X python 的正常安装目录,所以无论你使用哪种安装工具都可能会越来越混乱随着时间的推移。如果你要继续在那里工作,你最好在手动安装 python 上设置一个虚拟环境。
      【解决方案4】:

      根据你为 OS X python 提供的路径,我猜你的 OS X(豹子?)上的版本有点老了,所以我无法直接与我的机器进行比较。

      但是,将软件包添加到基本 OS X 安装始终是一件棘手的事情,我建议检查您添加的任何软件包的权限。执行ls -l /Library/Python/2.7/site-packages/ 并确保所有内容都具有r 权限(以及x 目录权限)(即-rwxr-xr-xdrwxr-xr-x)。

      我最近遇到过一个案例,sudo pip 不会对已安装的软件包设置用户读取权限,我相信“无模块”是我尝试使用它们时遇到的错误

      因为在 OS X 上添加软件包非常棘手,所以网上有大量关于手动安装 python 的指南。我在谷歌上匹配的第一个是Installing / Updateing Python on OS X(使用风险自负,我个人没有遵循该指南)

      (...第三部分安装系统Brew也是人们自动安装python的一种非常常见的方法)

      【讨论】:

      • 实际上为我解决问题的是添加到 .bash_profile PYTHONPATH="/usr/local/lib/python2.7/site-packages:$PYTHONPATH" export PYTHONPATH
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-12
      • 1970-01-01
      • 2016-05-08
      • 2021-09-18
      • 1970-01-01
      • 2020-05-05
      • 2020-07-25
      相关资源
      最近更新 更多