我有一個問題。我有這樣的目錄設置:Python從父級的子文件夾導入
folder/
main.py
/stuff/
__init__.py
function.py
/items/
__init__.py
class.py
我的問題是如何將class.py導入到function.py?此設置非常具體,無法更改。爲了實現這個目標,我需要做些什麼?
我有一個問題。我有這樣的目錄設置:Python從父級的子文件夾導入
folder/
main.py
/stuff/
__init__.py
function.py
/items/
__init__.py
class.py
我的問題是如何將class.py導入到function.py?此設置非常具體,無法更改。爲了實現這個目標,我需要做些什麼?
只要應用程序通過main.py
啓動,您的當前目錄結構似乎是理想的。
Python將始終自動將主腳本的父目錄添加到sys.path
(即您的示例中的folder
)的開頭。這意味着當搜索不屬於標準libarary的模塊和程序包時,導入機器將優先給予該目錄。
鑑於此,你可以導入classes.py
模塊插入function.py
,就像這樣:
from items import classes
(請注意,我已經改名爲模塊,因爲class
是一個Python關鍵字)。
如果以後添加了另一個模塊stuff
,並希望將其導入到functions.py
,你會怎麼做:
from stuff import another
,如果子包加入items
,和你想導入模塊從這一點,你會怎麼做:在這種自上而下的方式指定
from items.subpackage import module
進口可以從在應用程序中的任何模塊一起使用,因爲他們總是RELAT主要腳本的父目錄,它具有優先權。
將父文件夾添加到您的PYTHONPATH('sys.path.append(...)'),然後在'class.py'中簡單地執行'from stuff init function'。這是一個解決方案... – tamasgal 2014-12-07 16:13:03
可能的重複http://stackoverflow.com/questions/72852/how-to-do-relative-imports-in-python – kdopen 2014-12-07 16:20:26
明確的重複http://stackoverflow.com/questions/27215912/import 27216343#27216343 – kdopen 2014-12-07 16:21:59