分发python应用程序

use*_*005 9 python

我正在编写一个非常大的Python应用程序; 该应用程序实际上在很大程度上是用C和C++(Qt)编写的几个共享库的包装.我在没有管理员权限的情况下'安装'这个,所以包括共享库,二进制文件和Python模块在内的所有内容都必须位于非标准位置,即我有这样的情况:

  1. /funny/path/lib中的共享库
  2. 安装在/ funny/path/python/lin中的Python模块
  3. python解释器本身也可能位于/非标准/位置

整个事情是作为开源分发的,我需要找到一种相当优雅和简单的方法来设置必要的环境变量.整个过程与版本控制软件一起分发; 因此必须在某些"本地添加"中设置环境变量,例如:

#!/bin/bash
export LD_LIBRARY_PATH /funny/path/lib:$LD_LIBRARY_PATH
export PYTHONPATH /funn/path/python/lib:$PYTHONPATH

# 
exec python main.py
Run Code Online (Sandbox Code Playgroud)

但我在Python编程是有原因的 - 我厌恶这些shell脚本.任何关于最优雅的方式的观点都会很好.

乔金 -

S.L*_*ott 2

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

由于您不会安装在标准位置(并且似乎无法让系统管理员在标准位置安装所需的软件包),这几乎是您唯一的选择。

PYTHONPATH您可以在 Python 中设置。在里面sys.path。设置环境变量(如LD_LIBRARY_PATH)比较困难,因为 Linux 限制了应用程序更改环境的方式。

您可以用来os.exec在修改后的环境中运行进程。使用 Python 然后调用 Python 有点奇怪os.exec..e(),但这是设置附加环境变量的简单方法。