我正在尋找一些關於我遇到的python問題的建議。我是python的新手。我相信我依靠其他語言的編程經驗來完成這項工作,並且我終於停滯不前。這裏是場景,我正在導入一個依賴於另一個模塊的模塊。從相對路徑導入模塊
我的節目,叫司機test.py,開始時是這樣的:在QueryDDEX.py文件
import sys
sys.path.append(r'C:\Program Files (x86)\Zorba XQuery Processor 2.9.1\share\zorba\uris\com\nuemeta\www\modules\DDEXpedite\bindings\Python\Code and Other Files')
import QueryDDEX
然後,我有:
import sys,os
temp = os.getcwd()
os.chdir(os.path.dirname(os.path.realpath(__file__)))
sys.path.append(os.path.realpath("..\..\..\..\..\..\..\..\..\python"))
print sys.path
import zorba_api
os.chdir(temp)
在我腦子裏,我想(1)保存當前工作目錄,(2)將當前工作目錄更改爲QueryDDEX.py模塊的目錄,(3)從相對路徑導入zorba_api模塊,因爲如果我將此模塊部署到其他計算機上,它們可能不會與我的文件結構相同,(4)更改當前的工作目錄回到最初的樣子。
現在,我已經讀過,使用相對路徑並不好,我也讀過它是好的。我沒有看到另一個選擇,因爲我沒有寫zorba_api,所以我沒有太多的控制權。無論如何,該程序的輸出是這樣的:
['C:\\Users\\Administrator\\Desktop', 'C:\\Python27\\Lib\\idlelib', 'C:\\Windows\\SYSTEM32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages', 'C:\\Program Files (x86)\\Zorba XQuery Processor 2.9.1\\share\\zorba\\uris\\com\\nuemeta\\www\\modules\\DDEXpedite\\bindings\\Python\\Code and Other Files', 'C:\\Program Files (x86)\\Zorba XQuery Processor 2.9.1\\share\\zorba\\python']
Traceback (most recent call last):
File "C:\Users\Administrator\Desktop\Test.py", line 4, in <module>
import QueryDDEX
File "C:\Program Files (x86)\Zorba XQuery Processor 2.9.1\share\zorba\uris\com\nuemeta\www\modules\DDEXpedite\bindings\Python\Code and Other Files\QueryDDEX.py", line 9, in <module>
import zorba_api
ImportError: No module named zorba_api
這就是事情在我看來變得棘手時,zorba_api模塊位於
C:\\Program Files (x86)\\Zorba XQuery Processor 2.9.1\\share\\zorba\\python
,我們可以通過我的調試語句看到它IS在python類路徑中。那麼,爲什麼我會得到這個錯誤?
我明白你在說什麼,但也許我不知道,因爲我仍然不明白爲什麼我的解決方案在這種情況下不起作用。我將當前工作目錄更改爲__file__,因此它位於模塊的位置,然後嘗試使用從第一個模塊到第二個模塊的相對路徑。它適用於我使用絕對路徑。最後,我能做些什麼來解決它?我開始明白爲什麼我的程序不能正常工作,但現在我更加困惑於如何讓它工作。 – zg303
在你的'QueryDDEX中追加一個新路徑。py'文件你應該注意你在'test.py'路徑,所以也許你提供的路徑是錯誤的。 – cdonts
原來我是我的相對路徑中的一個目錄,添加「/../」解決了這個問題。感謝您的幫助,如果沒有您,需要花費更長的時間進行調試。 – zg303