簡體   English   中英

從不同的文件夾導入 python 模塊,其中導入另一個模塊

[英]Import a python module from a different folder with another module import in it

我有以下文件結構:

main.py
Core/
    object_storage.py
    setup_logger.py

主要.py:

from Core import object_storage
#rest doesn't matter

對象存儲.py:

from setup_logger import logger
#rest doesn't matter

setup_logger.py:

import logging
import sys
Log_Format = "%(levelname)s %(asctime)s - %(message)s"
logging.basicConfig(stream = sys.stdout, 
                    format = Log_Format, 
                    level = logging.INFO)

logger = logging.getLogger()

當我運行 object_storage.py 時,它運行良好,但是當我想運行 main.py 時,它給了我錯誤:

ModuleNotFoundError: No module named 'setup_logger'

我檢查了 os.getcwd(),我認為問題是當我想從 Core/object_storage.py 導入 setup_logger 時,工作目錄仍然是我擁有 main.py 的根文件夾。

解決這個問題的方法是什么?

當 Python 運行您的文件時,它會將文件的目錄添加到sys.path (這是 Python 查找模塊和包的位置)。

我建議您在這些情況下始終檢查sys.path ,然后您可以輕松找出發生此錯誤的原因。

當您運行main.py時,只有它的目錄被添加到sys.path中。 因此,您可以使用Core.setup_logger setup_logger Python 知道在哪里可以找到Core目錄。將object_storage.py文件更改為:

from Core.setup_logger import logger

到目前為止,運行main.py運行良好,但現在出現了另一個問題。 這一次,如果你自己運行object_storage.py ,你會得到如下錯誤:

ModuleNotFoundError: No module named 'Core'

因此,為了能夠直接運行main.pyobject_storage.py ,請考慮將main.py的目錄( Core所在的位置)的路徑添加到object_storage.py ,因為這次該目錄不會自動添加:

# object_storage.py

import sys
sys.path.insert(0, r'PATH TO WHERE Core EXIST')

暫無
暫無

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

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