【问题标题】:python/serial broken in OSX lion / launchd在 OSX lion / launchd 中,python/serial 被破坏
【发布时间】:2011-08-17 13:30:25
【问题描述】:

我有一个 launchd 条目,它适用于 OSX 10.6,但在 10.7 中失败。它使用 python,并在尝试导入 serial 时产生错误。这个我不太明白,因为我已经重新下载了pyserial-2.5 并用sudo 重新安装了它。 (无奈之下,我为我的机器上的多种 python 重新安装了它。)作为测试,我可以输入 python 并毫无困难地执行import serial。也许有一个为交互式用户设置好的系统路径,但没有设置为启动??

谁能建议我如何诊断问题?

【问题讨论】:

  • 你是如何安装pyserial的?通过点子?
  • 是的,但不使用 pip。 (我下载了它并从源文件中执行了sudo python build 然后sudo python install。)pip 给出如下,这似乎表明它没问题。 $ pip search pyserial pyserial - Python Serial Port Extension INSTALLED: 2.5 (latest)
  • 另外,我刚刚做了sudo pip install pyserial --upgrade,但仍然失败。

标签: python macos osx-lion launchd pyserial


【解决方案1】:

你要附加的路径:

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

是第三方非系统 Python 的 site-packages 目录,可能使用 python.org 安装程序安装,而不是 Apple 提供的系统 Python 2.7 的安装程序,即:

/Library/Python/2.7/site-packages

因此,您很可能正在使用 python.org Python 来安装 pyserial,但在 launchd 下启动系统 Python。检查你的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

如果您想使用系统提供的 Python 安装 pyserial,您可以在安装时使用它的绝对路径:

/usr/bin/python2.7

【讨论】:

    【解决方案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 调用的。

    PS 给以后来这里的任何人:切换到 OSX 10.7 (Lion) 改变了很多事情。也许我在某处有一些初始化文件,但我忘记了。如果我发现了,我会尝试这样做,并在此处发表进一步的评论。

    【讨论】:

      猜你喜欢
      • 2012-09-28
      • 2011-02-14
      • 1970-01-01
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      • 2021-10-20
      • 2021-04-29
      • 1970-01-01
      相关资源
      最近更新 更多