我有一个launchd
适用于 OSX 10.6 但在 10.7 上失败的条目。它使用 python,并在尝试导入时产生错误serial
。我不太明白这个,因为我已经重新下载pyserial-2.5
并使用 sudo 重新安装了它。(无奈之下,我为我的机器上的多种 python 重新安装了它。)作为测试,我可以import serial
毫无困难地输入 python。也许有一个为交互式用户设置好的系统路径,但没有设置为启动?
谁能建议我如何诊断问题?
您要附加的路径:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
是site-packages
第三方非系统 Python 的目录,可能使用 python.org 安装程序安装,而不是 Apple 提供的系统 Python 2.7 的目录,即:
/Library/Python/2.7/site-packages
因此,您很可能正在使用 python.org Python 进行安装pyserial
,但在launchd
. 检查你的 shell PATH
( echo $PATH
),它可能有:
/Library/Frameworks/Python.framework/Versions/2.7/bin
在里面。并尝试which python
。如果您想将 python.org Python 与您的launchd
plist 一起使用,请将其修改为使用正确 Python 的绝对路径,例如:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
如果要pyserial
使用系统提供的 Python 进行安装,可以在安装时使用绝对路径:
/usr/bin/python2.7
一些实验python -S
表明我sys.path
没有正确设置,所以我解决了这个问题
import sys
sys.path.append('/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages')
import serial
我知道这很尴尬,因为它是如此具体,但我想我将不得不忍受这一点,除非或直到我能找到一种方法来告诉 python 在哪里找到东西,因为它是从launched
.
PS 给以后来这里的任何人:切换到 OSX 10.7 (Lion) 改变了很多事情。也许我在某处有一些初始化文件,但我忘记了。如果我发现了,我会尝试这样,并在这里发表进一步的评论。