2011-07-18 73 views
1

我有一個這樣的目錄結構:導入祖先模塊

在src文件夾

我有一個名爲util.py中的src/DIR1/DIR2 模塊我有另一個模塊命名client.py

我需要在client.py中導入util.py。

我已經看到了關於這個主題的計算器不同的問題,我想不同的情況:

(相對路徑)client.py文件夾的init.py我試圖做

from ... import util 

但它給我導入錯誤。在同init.py

(絕對路徑)我想:

import src.util 

,但它給了我同樣的錯誤(導入錯誤)。

我需要一種方式,導致py2exe沒有問題,因爲我以後需要它。

感謝您的任何答案。

我忘了提及我在使用python2.7.1

+0

前兩件事是尋找的,是在PYTHONPATH'src'文件夾,你有沒有'__init__ .py'文件? –

+0

是的,src在PYTHONPATH中,我有init.py文件。 – egesuato

+0

可以肯定的是,你有'__init __。py'文件,有雙精度值,對吧?從src運行'python'並嘗試導入util,它應該可以工作。 –

回答

-1

好吧。首先,將所有文件放在同一個文件夾中。 從那裏,你可以說從..... util.py進口util 或從.... util.py進口*

如果你只是說導入util.py,你將不得不說util。 (在這裏插入功能),只要你打電話什麼。

另外,如果它不在同一個文件夾中,則需要一個絕對目錄。從C:/文檔和設置/桌面(ETC)util.py進口UTIL

修訂:

對於第二部分。我會建議你做: 從SRC/DIR1/util.py進口UTIL

+0

我不想把所有的文件放在同一個文件夾中。 – egesuato

+0

接下來的兩段討論它在單獨的文件夾中。 – TheChes44

1

我通常做以下

import sys 
sys.path.append('../..') #assure that src directory is in sys.path 
import util 
+0

它似乎是正確的做法,但我沒有得到它的工作。我以錯誤的方式做事。你把這些代碼行放在init.py中嗎?你在client.py中使用什麼導入util? – egesuato

+0

不,我把它放在client.py – pomel

0

你需要從src文件夾和每個包含子文件夾添加__init__.py文件你想要導入。您還需要確保src在您的PYTHONPATH中。

假設client.py是在你的src文件夾並util.py在src/DIR1/DIR2(在這個路徑上的每個目錄下有一個__init__.py,記不清了),你會導入UTIL從客戶端,像這樣:

import dir1.dir2.util 

__init__.py文件可以爲空。

你的src目錄結構最終會變成這樣(基於爲例):

src/ 
|-- client.py 
|-- dir1 
| |-- dir2 
| | |-- __init__.py 
| | `-- unit.py 
| `-- __init__.py 
`-- __init__.py 
+0

這個場景是逆轉的。 client.py位於src中的src/dir1/dir2和util.py中。我想在client.py中導入util.py。 – egesuato