我需要一些在python中使用文件夹结构的帮助。我被赋予了这样的结构:
/main-folder
/assets
somefiles.txt
/integrations
/module-folder
__init__.py
ingestion.py
__init__.py
models.py在ingestion.py内部,我有:
import os
from models import MyModel
PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.dirname(__file__)))
some_function()
some_processing()
if __name__ == "__main__":
some_function()上面提到的两个__init__.py都是空的。
因此,我需要处理一些信息,并使用models模块来存储它们。当试图从其dir直接执行intestion.py时,它会说:No module named 'models'。所以我猜我得把整件事作为一个整体来执行。我不知道我应该如何导入一个模块,位于包的上方,不能触摸结构。
任何帮助都是值得感激的。
发布于 2020-06-02 21:14:20
您需要做的是将模块的目录添加到PYTHONPATH环境变量中。但是,如果您不想这样做,您可以在您的程序中修改sys.path列表,在该列表中,Python解释器搜索要导入的模块,即python 他说。
当导入名为垃圾邮件的模块时,解释器首先搜索具有该名称的内置模块。如果找不到,则在变量spam.py提供的目录列表中搜索名为sys.path的文件。从以下位置初始化sys.path:
初始化后,Python程序可以修改sys.path。包含正在运行的脚本的目录位于搜索路径的开头,位于标准库路径的前面。这意味着将加载该目录中的脚本,而不是库目录中同名的模块。这是一个错误,除非替换是有意的。
知道了这一点,您可以在程序中执行以下操作:
import sys
# Add the main-folder folder path to the sys.path list
sys.path.append('/path/to/main-folder/')
# Now you can import your module
from main-folder import models
# Or just
import main-folderhttps://stackoverflow.com/questions/62161326
复制相似问题