我正在编写一个相当大的 Python 应用程序;该应用程序实际上在很大程度上是几个用 C 和 C++(Qt) 编写的共享库的包装。我在没有管理员权限的情况下“安装”它,所以包括共享库、二进制文件和 Python 模块在内的所有内容都必须位于非标准位置,即我遇到这样的情况:
- /funny/path/lib 中的共享库
- 安装在/funny/path/python/lin 中的 Python 模块
- python 解释器本身也可能位于/nonstandard/location
整个东西都是开源的,我需要找到一个相当优雅和简单的方法来设置必要的环境变量。整个东西都是用版本控制软件分发的;所以必须在一些“本地添加”中设置环境变量,例如:
#!/bin/bash
export LD_LIBRARY_PATH /funny/path/lib:$LD_LIBRARY_PATH
export PYTHONPATH /funn/path/python/lib:$PYTHONPATH
#
exec python main.py
但我使用 Python 编程是有原因的——我讨厌这些 shell 脚本。任何有关执行此操作的最优雅方法的意见都会很好。
乔金
最佳答案
为什么要浪费时间厌恶 shell 脚本?
由于您不会在标准位置安装,(并且似乎无法让系统管理员在标准位置安装所需的软件包)这几乎是您唯一的选择。
您可以在 Python 中设置 PYTHONPATH
。它位于 sys.path
中。设置环境变量(如 LD_LIBRARY_PATH
)比较困难,因为 Linux 限制了应用程序更改环境的方式。
您可以使用 os.exec
在修改后的环境中运行进程。使用 Python 然后执行 os.exec..e()
来调用 Python 有点奇怪,但这是设置额外环境变量的简单方法。
关于python - 分发 python 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5519222/