2013-02-25 159 views
1

我已經用Eclipse在Python中編寫了一個小腳本,並且它在從Eclipse執行時運行。從命令行執行python腳本:導入時出錯

>python test.py argument1 argument2 
from src import Tests, ImportError: No module named src 

腳本存儲與下列文件夾:

ScriptFolder 
.input 
.report 
.src 
..test.py 
..Tests 
...Test1.py 
...Test2.py 
..TestUtils 
...FileUtils.py 

這是我做的test.py進口的方式:不過,這並不在命令行工作

from src import Tests 
from TestUtils import FileUtils 

關於初始化 .py文件中,一個與test.py爲空共享文件夾,以及一個到測試文件夾中有這樣的內容:

import Test1 
import Test2 

而且初始化 .py文件到TestUtils有這樣的內容:

import FileUtils 

的問題是,如果我改變行from src import Tests只是import Tests我在Eclipse中收到錯誤:Unresolved imports: Tests. found at src.Tests

我該如何使它適用於Eclipse和命令行?

回答

3

sys.path.append(path_to_src_directory)

這將添加到默認路徑,其中蟒蛇查找模塊的路徑。 由於目前您的src目錄的路徑並不爲python所知,因此會給出No module named src錯誤。 此外,您的src目錄似乎沒有__init__.py文件。

+0

我不明白爲什麼我需要將__init__.py文件放入根文件夾。無論如何,我也導入TestConstants.py,它是根文件夾,並工作。我從TestUtils中導入FileUtils.py,並運行。但是不可能導入測試。爲什麼python知道在哪裏查找這些文件而不是測試文件?我怎樣才能使用sys.path.append調用?我想絕對路徑不會是一個好的實踐,所以我怎樣才能以相對的方式使用它? – 2013-02-25 08:57:34

+0

「我不明白爲什麼我需要'__init __。py'」......「爲什麼Python知道在哪裏查找這些文件而不是測試文件」第二個問題是第一個問題的答案。 – 2013-02-25 09:07:57

+0

@DanielRoseman但我明白它的目的是進入Tests文件夾,將每個py文件導入到該文件夾​​中,這樣你就可以導入所有文件,只需導入'測試'。但我不明白它的目的爲根文件。事實上,如果我編輯root的__init__.py文件並寫入導入測試,問題仍然存在 – 2013-02-25 09:15:56