2012-03-20 71 views
3

我在myapplication裏面有一些代碼在myapplications的目錄裏查找一些文件。我正在使用AptanaStudio,並且我看到我的代碼運行正常,但是當我創建debian軟件包並將其安裝到另一臺計算機時,搜索不成功,因爲sys.path看起來像不同的列表。dist-packages和sys.path

從Aptana執行sys.path包含可執行目錄(/ mysvncopy/myapplication)的路徑,我相信我的代碼會以這種方式找到這些文件。

應用程序的安裝離開這個文件在在/ usr /共享/ pyshared/MyApplication的,我想這個目錄會自動訪問關於/usr/local/lib/python2.6/dist-packagesSYS .path,但有些地方是錯誤的,/usr/local/lib/python2.6/dist-packages IS在sys.path,當然,但應用程序在/usr/share/pyshared/myapplication

如何確保應用程序知道在內部尋找/usr/share/pyshared/myapplication以及windows和mac中的等價內容?

如果我包括我的代碼:

<sys.path.append('/usr/share/pyshared/myapplication') 

搜索是succesfull,但是這個代碼是S.O.依賴。

如果需要,我可以粘貼setup.py。

感謝

+0

我再次提出這個問題是否錯了?是否不清楚? – Antonio 2012-03-22 07:45:50

+0

這是有點不清楚。你應用程序尋找什麼樣的文件?它如何查找這些文件?什麼是由此產生的錯誤消息?你使用的是什麼版本的Python? – 2012-07-12 03:41:47

回答

0

我不熟悉使用setup.py所以這可能不是很有用,但..

如果你在安裝程序的頂部同時導入sys和操作系統,你可以做一些事情像這樣:

if sys.getwindowsversion(): 
    <install to Windows dir> 
elif os.system('uname -a'): 
    ostest = os.popen('uname -a').split(' ') 
    if str('Linux') in ostest: 
     <install to Linux dir> 

等等。我沒有Mac,所以我不知道uname -a是否會返回任何內容,但是如果是這樣,您可以解析OSX(最有可能在某處)的東西。每個操作系統都有一個單獨的文件或一組文件。或者更簡單,在他們安裝有一些字符串在你所謂的「OSREPLACE」例如原始文件,然後使用類似這樣的代碼從上面的部分繼續尋找OS和作爲一個變量賦值之後:

...  
if os == 'linux': 
    NEWSTRING = 'linuxpaths' 
elif os == 'mac': 
    NEWSTRING = 'macpaths' 
elif os == 'windows': 
    NEWSTRING = 'windowspaths' 

for file in files: 
     with open(str(file), 'r') as f: 
      data = f.read() 
      data = data.replace('OSREPLACE', 'NEWSTRING') 
     with open(str(file), 'w') as f: 
      f.write(data)