2017-04-03 137 views
1

這裏是專業的Python新手。我創建了一個名爲aviation的Python模塊,其中有一個名爲database.py的文件。無法導入我的模塊到另一個模塊

我有另一個叫做core的模塊,裏面有一個文件叫做calculator.py

我想將aviation.database.py導入我的calculator.py

的基本結構如下:

My project 
    aviation (module) 
     - database.py 
    core (module) 
     - calculator.py 
    test.py 

calculator.py文件有一個進口,如:

from aviation import database as aviation_database 

此模塊無法識別,我得到一個紅色的波浪線表示之多。

如果我在aviationcore之外創建另一個文件test.py並添加上面的導入,這個tests.py文件沒有問題 - 導入工作正常。

看來,我需要做的事情,使我的模塊可從另一個模塊導入......它讓我輸入安裝的模塊(如date),但我不知道我錯過了什麼。

我使用IntelliJ IDE,我的代碼位於常規C:\ Users \\ IdeaProjects目錄中。

有人可以告訴我該怎麼做,爲什麼我面臨這個問題?

+0

我說你必須添加 '我的項目'[PYTHONPATH(http://stackoverflow.com/questions/19917492/how-to-use-pythonpath)。 – carlosvin

+0

@carlosvin嗯,我必須修改系統變量,讓我的IDE知道使用所述IDE創建的文件在哪裏?它爲什麼從'test.py'工作?我不想從我的機器上的任何隨機位置運行我的代碼。 – pookie

+0

您不必修改系統變量,您可以配置您的IDE以在運行腳本時將「我的項目」添加到python路徑。我猜你正在運行'python test.py',這意味着python將'My project'目錄添加到執行python路徑。您可以嘗試運行'python core/calculator.py' – carlosvin

回答

0

那麼我會建議你在模塊中創建__init__文件。

python3 doc指出:

__init__.py文件都需要使Python視該 目錄爲一個包;這樣做是爲了防止 目錄具有公共名稱(如字符串),無意中隱藏了稍後在模塊搜索路徑中發生的有效模塊。在 最簡單的情況下,初始化的.py可以只是一個空文件,但它可以還 執行初始化代碼爲包或設置所有 變量,後面敘述。

所以,你的目錄結構變得

My project 
    aviation (module) 
     - database.py 
     - __init__.py 
    core (module) 
     - calculator.py 
     - __init__.py 
    test.py 

現在導入所有的東西在你的__init__文件,你從其他包想給我們。像航空__init__.py文件寫

import database 

同樣,對於核心的__init__.py 現在的計算器。py你可以通過導入他們 -

from aviation import database 

讓我知道,如果這有幫助!

感謝

+0

謝謝,我已經嘗試過,但我不認爲Python 3我們需要使用__init__.py。我認爲這只是包(模塊集合)。無論如何,它不起作用。 – pookie

+0

然後,一個簡單的heck將爲你工作, 在sys.path中追加項目的路徑 –