首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python帮助处理包和模块

Python帮助处理包和模块
EN

Stack Overflow用户
提问于 2020-06-02 21:00:33
回答 1查看 45关注 0票数 1

我需要一些在python中使用文件夹结构的帮助。我被赋予了这样的结构:

代码语言:javascript
复制
/main-folder
    /assets
        somefiles.txt
    /integrations
        /module-folder
            __init__.py
            ingestion.py
        __init__.py
    models.py

在ingestion.py内部,我有:

代码语言:javascript
复制
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'。所以我猜我得把整件事作为一个整体来执行。我不知道我应该如何导入一个模块,位于包的上方,不能触摸结构。

任何帮助都是值得感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-02 21:14:20

您需要做的是将模块的目录添加到PYTHONPATH环境变量中。但是,如果您不想这样做,您可以在您的程序中修改sys.path列表,在该列表中,Python解释器搜索要导入的模块,即python 他说

当导入名为垃圾邮件的模块时,解释器首先搜索具有该名称的内置模块。如果找不到,则在变量spam.py提供的目录列表中搜索名为sys.path的文件。从以下位置初始化sys.path:

  • 包含输入脚本(或当前目录)的目录。
  • PYTHONPATH (与shell变量路径具有相同语法的目录名称列表)。
  • 与安装相关的默认设置。

初始化后,Python程序可以修改sys.path。包含正在运行的脚本的目录位于搜索路径的开头,位于标准库路径的前面。这意味着将加载该目录中的脚本,而不是库目录中同名的模块。这是一个错误,除非替换是有意的。

知道了这一点,您可以在程序中执行以下操作:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62161326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档