2011-04-01 81 views
9

我正在編寫一個相當大的Python應用程序;該應用程序實際上大部分是用C和C++(Qt)編寫的幾個共享庫的包裝。我是「安裝」這個沒有管理員權限,所以一切都包括共享庫,二進制也Python模塊必須是在非標準位置,即我有這樣的情況:分配python應用程序

  1. 在/滑稽/路徑共享庫安裝在/滑稽/路/ Python的/ lib目錄
  2. Python模塊/ LIN
  3. Python解釋器本身也可能是/非標準/位置

整件事的開放源碼,我需要找到一個合理優雅和簡單的方式來設置必需品ry環境變量。整個事情是與版本控制軟件分發的;所以環境變量必須設置在一些'本地添加',即類似:

#!/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

+2

我喜歡你最後一段的表達方式:) – Geo 2011-04-01 21:48:39

+0

爲什麼不能用管理員權限在適當的位置安裝東西,並避免討厭的shell腳本? – 2011-04-01 21:58:53

+0

如前所述,這是作爲開源發佈的;對於那些肯定會是最好的情況的人來說。我自己在大型不靈活公司工作 - 研究部門的Joe Average不允許考慮在例如在/ usr /本地。 – user422005 2011-04-01 22:10:47

回答

1

爲什麼浪費時間討厭shell腳本?

由於您不會在標準位置安裝(並且似乎無法讓系統管理員在標準位置安裝所需的軟件包),這幾乎是您唯一的選擇。

您可以在Python中設置PYTHONPATH。它在sys.path。設置環境變量(如LD_LIBRARY_PATH)比較困難,因爲Linux限制了應用程序改變環境的方式。

您可以使用os.exec在修改的環境中運行進程。使用Python做os.exec..e()來調用Python有些奇怪,但它是設置額外環境變量的簡單方法。

+0

好的 - 謝謝,我會堅持一個shell腳本。什麼是調用最終python程序的首選方法:(1):exec python script.py(2):python script.py(3):script.py(在腳本中使用#!)。 – user422005 2011-04-02 07:20:49