簡體   English   中英

Python中的多級嵌套導入

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM