分发Python应用程序

9 投票
1 回答
741 浏览
提问于 2025-04-16 14:55

我正在写一个比较大的Python应用程序;这个应用程序实际上是对几个用C和C++(Qt)写的共享库的封装。我是在没有管理员权限的情况下“安装”这个应用程序,所以所有的东西,包括共享库、二进制文件和Python模块,都必须放在非标准的位置,也就是说,我的情况是这样的:

  1. 共享库放在 /funny/path/lib
  2. Python模块安装在 /funny/path/python/lin
  3. 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脚本。如果能分享一些最优雅的做法,那就太好了。

Joakim

1 个回答

2

为什么要浪费时间去讨厌 shell 脚本呢?

因为你不会把东西安装在标准位置(而且似乎也无法让系统管理员把需要的包安装在标准位置),这几乎是你唯一的选择。

你可以在 Python 中设置 PYTHONPATH。它在 sys.path 里。设置环境变量(比如 LD_LIBRARY_PATH)会更麻烦,因为 Linux 对应用程序如何更改环境有一些限制。

你可以使用 os.exec 来在一个修改过的环境中运行一个进程。用 Python 来调用 os.exec..e() 再去执行 Python 这有点奇怪,但这是设置额外环境变量的简单方法。

撰写回答