Python 帮助处理包和模块

Python help working with packages and modules

我需要一些帮助来处理 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 模块来存储它们。当试图直接从其目录执行 intestion.py 时,它说:No module named 'models'。所以我猜我必须把整个事情作为一个包来执行。我不知道我应该如何导入位于包上方的模块并且不能触及结构。

如有任何帮助,我们将不胜感激。

你要做的就是将模块的目录添加到 PYTHONPATH 环境变量中。但是,如果您不想这样做,您可以修改程序中的 sys.path 列表,其中 Python 解释器搜索要导入的模块,python 文档 says:

导入名为spam 的模块时,解释器首先搜索具有该名称的内置模块。如果未找到,它会在变量 sys.path 给出的目录列表中搜索名为 spam.py 的文件。 sys.path 从这些位置初始化:

  • 包含输入脚本的目录(或当前目录)。
  • PYTHONPATH(目录名称列表,语法与 shell 变量 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-folder