从另一个文件夹导入 python 模块,其中导入另一个模块
Import a python module from a different folder with another module import in it
我有以下文件结构:
main.py
Core/
object_storage.py
setup_logger.py
main.py:
from Core import object_storage
#rest doesn't matter
object_storage.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(),我认为问题是当我想从 [=30= 导入 setup_logger 时,工作目录仍然是我拥有 main.py 的根文件夹].py.
有什么办法可以解决?
当 Python 运行 是你的文件时,它会将文件的目录添加到 sys.path
(这是 Python 查找模块和包的地方)。
我建议您在这些情况下始终检查 sys.path
,然后您可以轻松找出发生此错误的原因。
当您 运行 main.py
只有它的目录被添加到 sys.path
。所以你可以找到 setup_logger
和 Core.setup_logger
(Python 知道在哪里可以找到 Core
目录。将 object_storage.py
文件更改为:
from Core.setup_logger import logger
到目前为止 运行ning 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')
我有以下文件结构:
main.py
Core/
object_storage.py
setup_logger.py
main.py:
from Core import object_storage
#rest doesn't matter
object_storage.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(),我认为问题是当我想从 [=30= 导入 setup_logger 时,工作目录仍然是我拥有 main.py 的根文件夹].py.
有什么办法可以解决?
当 Python 运行 是你的文件时,它会将文件的目录添加到 sys.path
(这是 Python 查找模块和包的地方)。
我建议您在这些情况下始终检查 sys.path
,然后您可以轻松找出发生此错误的原因。
当您 运行 main.py
只有它的目录被添加到 sys.path
。所以你可以找到 setup_logger
和 Core.setup_logger
(Python 知道在哪里可以找到 Core
目录。将 object_storage.py
文件更改为:
from Core.setup_logger import logger
到目前为止 运行ning 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')