簡體   English   中英

從其他級別的包中導入

[英]import from packages in other levels

我有這個結構,我想從子模塊導入submodule1 function,我該怎么做?

我嘗試了以下結構:

project/
__init__.py
    api/
        __init__.py
        submodule.py
    app/
        __init__.py
        submodule1.py
        submodule2.py
  • 項目/__初始化__.py:
__all__ = ['convertor', 'settings']
from . import convertor
from . import settings

  • 項目/api/__初始化__.py:

我對您的整個文件結構感到困惑,但據我所知,您有一個項目文件夾,您的主腳本位於項目文件夾的一個文件夾中,而您的模塊位於項目文件夾中的一個單獨文件夾中。 如果是這種情況,我不明白為什么您不將main.py文件與包含模塊的文件夾放在同一目錄中(我只提到以防萬一您可以這樣做,因為它使這要容易得多)但是如果您確定需要文件結構與當前相同,則可以使用以下解決方案:

import sys
from os import path
from pathlib import Path

sys.path.insert(0, path.join(Path(__file__).parent.absolute().parent.absolute(), "app"))
import submodule1

本質上,這獲取文件的路徑,它的父級(它所在的文件夾),然后是父級的父級(項目文件夾)將其添加到sys.path (您可以使用此列表路徑中的模塊)。 我幾乎 100% 確定有更好、更有效的方法來做到這一點,但由於問題的獨特性,這是我的想法。 我希望它有點幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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