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
我需要一些帮助来处理 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