2011-05-03 142 views
7

請注意,我搜索了SO,發現了這個錯誤,雖然有很多類似的問題,但我沒有找到解決這個問題的方法。嘗試在Python中導入自定義模塊時導入錯誤

我工作的一個Python模塊,看起來像這樣的:

/com 
    /company 
     /foo 
     /bar 

我編輯bar目錄中的源文件,並試圖導入生活在foo目錄中的類。我試圖導入文件通過以下方式:

from com.company.foo import * 
from company.foo import * 
from foo import * 
import com.company.foo 
import company.foo 
import foo 

每一種產生類似的錯誤:

ImportError: no module named com.company.foo 

我在每個目錄中__init__.py文件,包括包含com的目錄。

不知道我在做什麼錯在這裏 - 在此先感謝您的幫助!

+0

您的主文件是否位於與「com」相同的文件夾中? – rzetterberg 2011-05-03 21:21:01

+0

不,我正在編輯的文件位於'bar'目錄中。 – inkedmn 2011-05-03 21:21:48

+0

我的意思是引導文件。例如「python main.py」。啓動整個應用程序的文件。還是你使用wsgi或其他什麼是引導? – rzetterberg 2011-05-03 21:24:29

回答

5

/com需要的目錄是Python的路徑上。有許多方法可以做到這一點:每次

  1. 在命令行:

    [email protected]:~$ PYTHONPATH=/path/to/whatever python some_file.py

  2. 在你的shell配置(.bashrc.bash_profile等):

    export PYTHONPATH=/path/to/whatever

  3. 在Python代碼中(我不建議這樣做,因爲一般慣例):

    import sys 
    sys.path.append('/path/to/whatever')

正如一些評論者所說,通常這可以通過容器(mod_wsgi等)或通過引導/主腳本來處理(可能會執行類似選項#3的操作,或者可能會在設置的環境中調用如選項#1或#2)

0

認爲這是 從包含.foo進口* 至少在2.7及以上