OSX Lion中的python/serial失效 / launchd

0 投票
2 回答
1641 浏览
提问于 2025-04-16 23:47

我有一个在OSX 10.6上能正常工作的launchd条目,但在10.7上就出问题了。这个条目使用了python,并且在尝试导入serial时出现了错误。我有点搞不懂,因为我已经重新下载了pyserial-2.5并用sudo重新安装了一遍。(出于绝望,我还为我机器上各种不同版本的python都重新安装了一遍。)作为测试,我可以进入python环境并顺利执行import serial。也许有一个系统路径是为交互式用户设置好的,但对于启动的程序却没有设置好?

有没有人能建议我如何诊断这个问题?

2 个回答

0

我在尝试使用 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(狮子系统)后,很多东西都变了。也许我之前有某个初始化文件忘记了。如果我找到那个文件,我会试试这个方法,并在这里再留言。

1

你正在添加的路径是:

/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

撰写回答