我有一个想在启动时启动的 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 调用该脚本;)