Python OSX 中 $ which Python 返回 /Library/Frameworks/Python.framework/Versions/2.7/bin/python

11 投票
4 回答
39742 浏览
提问于 2025-04-18 04:30

你好,我正在尝试在 Python 中使用 twisted,但是 Python 找不到 twisted

我已经成功运行了 $pip install twisted,但是它还是无法使用。

导入错误:没有名为 twisted.internet.protocol 的模块

看起来大多数人的 $which python 显示的是 /usr/local/bin/python

而我得到的是 /Library/Frameworks/Python.framework/Versions/2.7/bin/python

这可能是问题所在吗?如果是的话,我该如何更改 PATH 环境变量?

4 个回答

0

我也遇到了一个错误,提示说 ImportError: No module named xxx,虽然我已经用 pip install xxxpip2 install xxx 安装过了。最后我用 pip2.7 install xxx 成功了。这条命令把它安装到了 Python 2.7 的目录里。

1

好的,在终端里我终于找到了:

打开位于你用户根目录下的 .bash_profile 文件(只需在终端输入 $cd 就可以到达那里),然后添加 twisted 的路径。

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

根据你给的OS X Python路径,我猜你的OS X版本可能有点旧(可能是豹猫系统?),所以我没法直接和我的机器做比较。

不过,在OS X上添加软件包总是有点麻烦。我建议你检查一下你添加的任何软件包的权限。可以运行一下这个命令:ls -l /Library/Python/2.7/site-packages/,确保所有的文件都有r(读)权限,文件夹还要有x(执行)权限。也就是说,应该是像-rwxr-xr-x或者drwxr-xr-x这样的格式。

我最近遇到过一个情况,就是用sudo pip安装的包没有设置用户的读权限,结果我在使用这些包的时候就出现了“No module”的错误。

因为在OS X上添加软件包很麻烦,所以网上有很多关于手动安装Python的指南。我在谷歌上找到的第一个是在OS X上安装/更新Python(使用时请自行判断风险,我个人没有按照这个指南操作过)。

(... 第三方安装系统Brew也是很多人用来自动安装Python的常见方法。)

17

没问题的。

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'

这正是我目录的位置。

第二个目录和第四个目录之间的区别,你可以在这里找到

安装你的框架

在你的问题中,你提到pip安装成功,但安装的包还是不可用。我猜测你的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环境,帮助你为每个项目轻松设置包。

撰写回答