2017-07-05 119 views
0

我有一個文件系統,如下所示:無法找到文件導入

/ 
- website/ 
- - server.py 
- common.py 

/,我嘗試運行:python website/server.py而是試圖from common import my_func說,當它顯示了一個錯誤:

ImportError: No module named common 

有沒有辦法將文件表示爲模塊?我遇到的問題是,在PyCharm中工作時,它正確理解python文件並按照設計運行,但是當它們在VM中的命令提示符下運行時,它不理解。我從/正在運行python,認爲它會將其用作範圍,但似乎並不奏效。

我沒有從調試器或日誌中獲得更多信息。我究竟做錯了什麼?

編輯我試着按照Joao的要求做以下事情。 python ./website/server.py並返回以下行,這與上面收到的錯誤相同。

Traceback (most recent call last): 
    File "./website/server.py", line 3, in <module> 
    from common import my_func 
Import Error: No module named common 

回答

-1

嘗試

python ./website/server.py 
+0

我更新了格式化的問題,但我仍然得到這個錯誤。 – Fallenreaper

+0

這不是問題,問題是'common.py'與'server.py'不在同一個目錄。 – Ding

1

你試圖從父文件夾導入。

from common import my_func之前添加下面的代碼就可以了。

import sys 

#appending parent directory into the path 
sys.path.append('..') 
+0

這是一個解決方案。這隻會工作,雖然有以下理解:您當前的目錄不是'/'而是'/ website /' – Fallenreaper

0

在PyCharm PYTHONPATH被自動設置。假設你從包含common.py的目錄運行server.py,你可以將PYTHONPATH定義爲運行該目錄。

$ python website/server.py 
Traceback (most recent call last): 
    File "website/server.py", line 1, in <module> 
    from common import my_func 
ImportError: No module named common 

$ PYTHONPATH=`pwd` python website/server.py 
$ 

這裏的關鍵是要確保你所需要的包是在運行您的代碼時Python會搜索路徑。

+0

這是否用於Windows?它說,在執行該命令時,不會將「PYTHONPATH」識別爲內部或外部命令,可操作程序或批處理文件。 – Fallenreaper

+0

不,這是針對使用bash的Unix。如果你在Windows上運行,看看https://stackoverflow.com/questions/3701646/how-to-add-to-the-pythonpath-in-windows-7 –

+0

我認爲,假設路徑是一套全球通用的模塊。 Mine實際上只是一個項目的通用功能列表,因此將其添加到項目中是沒有意義的,並且在項目之外暴露得太多。 – Fallenreaper