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