2017-07-31 108 views
1

所以我有目錄與結構如下:導入模塊工作在Python 2,但不是Python的3

> current_directory 
    > submodule 
     /__init__.py 
     /some_module.py 
    /main.py 

__init__.py文件下面的語句是存在:

from some_module import some_funciton 

main.py整個submodule導入:import submodule。現在

,這個執行與Python 2完全沒有問題,但問題是,在Python 3 __init__.pyimport陳述引發ImportError例外:`無模塊名爲「some_module」。

當涉及到指定導入文件的層次結構時,Python 2和Python 3之間有什麼區別,以及如何調整代碼以使用Python 3?

+0

,應該工作。唯一的問題將是'from x import y'語句。你確定你沒有使用'from'? –

+0

是的,我是。我簡化了這個問題,以便提出這個問題。我會盡快編輯它。 –

回答

2

在python 3中,僅支持from . import submodule的相對導入。

您應該重寫你的import陳述或者使進口絕對通過增加項目目錄到Python路徑:

export PYTHONPATH=current_directory 
python main.py 
+0

謝謝,這清除它!有人將答案鏈接到包含此鏈接的不同問題:https://www.python.org/dev/peps/pep-0328/。這也是非常有用的。 –