rc.local 执行之前未设置 PYTHONPATH

rc.local 执行之前未设置 PYTHONPATH

我有一个想在启动时启动的 Python 脚本。在 rc.local 中输入命令会尝试运行该脚本,但会失败,因为该脚本找不到它所依赖的库。这些库位于非标准位置。通常,这不是问题,因为我通过在 /etc/environment 中设置 PYTHONPATH 环境变量来指定这些位置。

我尝试在 rc.local 中指定 PYTHONPATH(无论如何这不是一个最佳解决方案,因为我想在一个位置(即 /etc/environment)为所有用户指定系统范围的 PYTHONPATH),这部分解决了问题。但对于一个库(Quick2Wire),它仍然失败,因为包含的文件位于子目录中。PYTHONPATH 包含以下路径:

/usr/local/lib/cr/python/quick2wire-python-api/src

实际包含的文件是:

/usr/local/lib/cr/python/quick2wire-python-api/src/quick2wire/i2c.py

通常情况下,Python 知道它需要查找 quick2wire 子目录。

我想我可以在 rc.local 中设置一个特殊版本的 PYTHONPATH 来运行这个脚本,然后让 /etc/environment 中的版本替换它。只是想知道是否有更优雅的解决方案。

答案1

export PYTHONPATH=</blah/blah> ; python /usr/local/lib/cr/python/quick2wire-python-api/src/quick2wire/i2c.py 

上述方法应该可以解决问题。

否则,您可以创建包含上述内容的脚本(.sh)并从 rc.local 调用该脚本;)

相关内容