OSX Lion中的python/serial失效 / launchd
我有一个在OSX 10.6上能正常工作的launchd
条目,但在10.7上就出问题了。这个条目使用了python,并且在尝试导入serial
时出现了错误。我有点搞不懂,因为我已经重新下载了pyserial-2.5
并用sudo重新安装了一遍。(出于绝望,我还为我机器上各种不同版本的python都重新安装了一遍。)作为测试,我可以进入python环境并顺利执行import serial
。也许有一个系统路径是为交互式用户设置好的,但对于启动的程序却没有设置好?
有没有人能建议我如何诊断这个问题?
2 个回答
我在尝试使用 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
启动的。
给后来的朋友们一个小提示:切换到 OSX 10.7(狮子系统)后,很多东西都变了。也许我之前有某个初始化文件忘记了。如果我找到那个文件,我会试试这个方法,并在这里再留言。
你正在添加的路径是:
/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
这个路径是一个第三方的 Python 的 site-packages
目录,也就是说它不是系统自带的 Python,而是可能通过 python.org 的安装程序安装的。系统自带的 Python 2.7 的路径是:
/Library/Python/2.7/site-packages
所以你很可能是在用 python.org 的 Python 来安装 pyserial
,但却是在用系统自带的 Python 运行程序,运行的方式是通过 launchd
。你可以检查一下你的 shell 的 PATH
(输入 echo $PATH
),里面可能有:
/Library/Frameworks/Python.framework/Versions/2.7/bin
然后试试输入 which python
。如果你想在 launchd
的配置文件中使用 python.org 的 Python,你需要把它修改成使用正确 Python 的绝对路径,比如:
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
如果你想用系统自带的 Python 来安装 pyserial
,你可以在安装时使用它的绝对路径:
/usr/bin/python2.7