2010-04-20 48 views
2

我需要編寫在主機應用程序內運行的python代碼。 Python代碼應該部署在主機應用程序的特定文件夾下。我必須把我的條目python模塊放在特定文件夾的根目錄下。我想把我所有的其他python代碼和c/C++ dll放在一個子文件夾下,我更喜歡命名像XXX-1.0這樣的子文件夾,這個數字就是我的python代碼的版本。入口python模塊只是簡單地調用子文件夾下的python模塊。如何在版本化的包文件夾中調用python模塊?

通過這種方式,不同版本的python代碼可以在不碰撞的情況下一起部署。我可以知道它有可能嗎?謝謝。

回答

1

我不確定我是否正確理解了您的問題,但是這裏有一個簡單的方法可以讓幾個軟件包版本無碰撞。

的目錄結構:

C:\tmp\eggs>dir /B /S 
C:\tmp\eggs\libs 
C:\tmp\eggs\test.py 
C:\tmp\eggs\libs\foo-1.0.egg 
C:\tmp\eggs\libs\foo-2.0.egg 
C:\tmp\eggs\libs\foo-1.0.egg\foo.py 
C:\tmp\eggs\libs\foo-2.0.egg\foo.py 

現在文件的內容:

# contents of C:\tmp\eggs\libs\foo-1.0.egg\foo.py 
version=(1,0) 

# contents of C:\tmp\eggs\libs\foo-2.0.egg\foo.py 
version=(2,0) 

#contents of C:\tmp\eggs\test.py: 

import sys 
sys.path.insert(1, 'libs') 
from pkg_resources import require 

require('foo<1.5') 
import foo 
print foo.version 
# will output (1,0) 

如果更改'foo<1.5''foo>1.5',或'foo'輸出將改變爲(2,0)

細節你會在setuptools文檔找到。

1

如果你創建了一個.pth文件,例如,X.pth並把XXX-1.0內爲內容

XXX-1.0\ 
     - xxx.py 
X.pth 

然後,你可以import xxx

注意:只在站點包文件夾中進行測試,我我不確定你可以把你的子文件夾放在任何地方。

編輯: 例如,wxPython這樣做,因爲它可以在同一臺機器上有多個版本。

wx-2.8-msw-unicode \ 
        wx 
         \ 
         more stuff 
wx.pth (wx-2.8-msw-unicode) 
0

下面是我已經做到了:

tools 
    |-- packageA 
     |-- packageA-1.0 
       |-- packageA 
        |-- modules 
     |-- packageA-2.0 
       |-- packageA 
        |-- modules 
    |-- packageB 
     ... 

這樣,當你想升級,只需添加/packageA/packageA-2.0到PYTHONPATH,你仍然可以做import packageA

相關問題