[英]Multiple-level nested imports in Python
我目前正在從事以下項目,並且在導入時遇到了一些困難。 我以前是Python之前的Ruby背景,所以我懷疑我只是缺少了一些東西。
-src
--project
---actions
----some .py files
---config
----some .py files
---db
----some .py files
-tests
--some .py files
-run.py
我想做的一些動作是:
run.py
導入src / project / config / run.py
project
第二級文件夾之間導入(即, actions
文件從config
導入某些內容) 有人會對如何實現這一目標有任何建議嗎?
因此,引用更深入目錄的內容非常容易。 例如,從run.py,您將可以使用諸如:
from src.project.config.file import foo
也可以很容易地訪問同一目錄中的內容,例如您正在src / file1.py中嘗試訪問src / file2.py,這將是:
from file2 import foo
這也可以。 但是,如果您嘗試向上導入,請從file.py到run.py並嘗試運行以下內容:
from ... import run.foo
您將收到以下錯誤:
ValueError: attempted relative import beyond top-level package
問題在於Python假設您的頂級軟件包位於正在運行的文件所在的位置。 這就是為什么您可以在相同級別和更深層次上導入所有內容,而在上面沒有任何其他內容的原因。
一個簡單的解決方法是將文件的路徑附加到sys.path
這樣:
import sys
sys.append('path/to/run')
from run import foo
這就是您問題的答案。
根據項目的設置方式,盡管您似乎想制作一個模塊,並且需要更多操作,但我建議您閱讀文檔,這非常好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.