[英]File importing on python project
我想在python中有以下項目目錄結構:
project\
generic.py
subdir1\
file1.py
subdir2\
file2.py
subdir3\
file3.py
在 file1.py 中,我想從項目的根目錄導入generic.py 。
import generic
不幸的是,我在嘗試執行“file1.py”時出錯
root:~/project/sidir1# python file1.py
Traceback (most recent call last):
File "file1.py", line 7, in <module>
import generic
ImportError: No module named generic
我想執行單個文件*.py並包含generic.py 。
如何正確地將它包含在這樣的目錄結構下?
您可以通過在根目錄中創建__init__.py
來使您的 python 項目成為一個包。
然后您可以使用相對導入,例如: from .. import generic
看看這里:如何導入上面目錄中的 Python 類? 如何導入上面目錄中的 Python 類?
這是Python path的原因,當您使用import
,如果給定名稱的模塊存在,python 將嘗試在sys.path
中的每個目錄中sys.path
,如果沒有找到,他會提出。
要解決您的問題,只需將父目錄添加到您的 python 路徑
import sys
sys.path.append("..")
我鼓勵您將generic.py
與其他子模塊一起包裝在一個包中。 從 root 導入通常是一個很好的方法,以后需要調試不再按應有方式工作的導入。 包內的相對導入也可能成為問題。
只需構建一個這樣的結構:
project\
my_package\
generic.py
__init__.py
subdir1\
file1.py
__init__.py
subdir2\
file2.py
__init__.py
subdir3\
file3.py
__init__.py
現在在file*.py
做: from my_package import generic
現在在project
級別放置一個main.py
或類似的腳本,您可以在其中使用 my_package 中可用的函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.