2012-05-29 86 views
6

我不知道pycharm是否與該問題有關,或者它是否是noob。從其他軟件包導入python模塊時遇到的麻煩(pycharm給出了未解決的參考)

這是我的文件夾佈局和三個代碼文件的截圖:

screenshot

我使用Pycharm在Windows和「my_working_directory」是我的工作目錄。您可以在屏幕截圖中看到,在mod1.py「from package2.mod2」中加下劃線表示「未解析的參考」。

當我嘗試運行mod1.py我得到:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py 
Traceback (most recent call last): 
    File "C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py", line 1, in <module> 
    from package2.mod2 import SomeClass 
ImportError: No module named package2.mod2 

當我運行main.py我得到:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/main.py 
hi 

我不明白爲什麼一件作品,而不是其他。

主要的問題是,pycharm給我沒有自動完成,並從mod1它不能檢測到package2。這是一個巨大的問題,因爲package1是我的視圖包,package2是我的模型或utils或lib包(在大模型視圖控制器中)。 (示例https://github.com/coto/gae-boilerplate/blob/master/web/handlers.py pycharm沒有檢測到任何從lib。?import?語句(給出未解析的引用)

任何人都知道這是怎麼回事?這是導入包的最佳方式嗎?我應該期望能夠有自動完成

應該「my_working_directory」可以通過使另一初始化 .py文件製作成包

+1

認爲你需要將它添加到你的python路徑。你可以從main看到package1,但是當你導入mod1時,你在mod1中看不到package2,因爲它在父文件夾中,而不是在package1中。 – GP89

+1

@ GP89「將它添加到你的Python路徑」,什麼是「它」? C:\ Users \ Robert \ PycharmProjects \ play \ my_working_directory \?也應該是我的IDE的工作,爲我添加這個?或所有我的項目,我應該搞亂我的Windows路徑設置在compter>屬性>高級設置>環境變量 –

+4

啊,我發現在pycharm>設置>項目結構,我不得不改變項目根/播放/播放/ working_directory !!! 謝謝你幫我解決這個問題。 –

回答

2

這可能是C:??/用戶/羅伯特/ PycharmProjects /播放不上你的%PYTHON_PATH%

+0

嗨雅各布,我認爲你可以做些什麼。我將print sys.path添加到mod1.py和main.py中。然後我運行mod1.py並記錄路徑。然後我運行main.py並記錄路徑。兩個路徑集的區別是:set(['C:\\ Users \\ Robert \\ PycharmProjects \\ play \\ my_working_directory \\ package1']) set(['C:\\ Users \\ Robert \ \ PycharmProjects \\在MOD1在路徑1打\\ my_working_directory']) –

+0

我得到 路徑1 = sys.path中 對於我: 在我,如果 「玩」: 打印我 C:\用戶\羅伯特\ PycharmProjects \戲\ my_working_directory \ package1 C:\ Users \ Robert \ PycharmProjects \ play –

+0

in main。PY我得到: 因爲我在路徑2: 如果我 「玩」: 打印我 C:\用戶\羅伯特\ PycharmProjects \遊戲\ my_working_directory C:\用戶\羅伯特\ PycharmProjects \玩 –