Properly importing modules in Python(正确导入Python中的模块)
问题描述
如何设置模块导入,以便每个模块可以访问所有其他模块的对象?
我有一个中等大小的Python应用程序,模块文件位于不同的子目录中。我已经创建了将这些子目录附加到sys.path的模块,并使用import thisModule as tm导入了一组模块。使用该限定来引用模块对象。然后我使用from moduleImports import *将该模块导入到其他模块中。代码现在是草率的,并且有几个这样的东西,通常是重复的。
首先,应用程序失败,因为一些模块引用未分配。此代码在单元测试时运行。
第二,我担心会导致递归模块导入的问题。导入模块导入导入此模块,它导入模块导入。。。。
执行此操作的正确方法是什么?
推荐答案
"我有一个中等大小的应用程序,其模块文件位于不同的子目录中。"
很好。绝对确保每个目录包含一个__init__.py文件,以便它是一个包。
"我已创建将这些子目录附加到sys.path"
坏。使用PYTHONPATH或安装整个结构Lib/site-packages。不要动态更新sys.path。这是一件坏事。难以管理和维护。
"使用import thisModule as tm导入一组模块。"
说不通。也许您的结构中的每个模块都有一个import thisModule as tm。这是典型的标准做法:只导入您需要的模块,不导入其他模块。
"然后使用from moduleImports import *将该模块导入到其他模块"
坏。不要随便进口一堆东西。
每个模块都应该有一个较长的列表,其中列出了它需要的具体内容。
import this
import that
import package.module
显式列表。没有魔法。没有动态更改为sys.path。
我当前的项目有100个模块,十几个包。每个模块都只导入其所需的内容。没有魔法。
这篇关于正确导入Python中的模块的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:正确导入Python中的模块
基础教程推荐
- 在 Celery 工作人员中捕获 Heroku SIGTERM 以优雅地关 2022-01-01
- 使用生成器和迭代器时 Python 多循环失败 2022-01-01
- numpy float:比算术运算中内置的慢 10 倍? 2022-01-01
- 用 Python 编写 Fortran 无格式文件 2022-01-01
- Discord.py 缺少必需的参数 2022-01-01
- 将 x 轴刻度更改为自定义字符串 2022-01-01
- pyserial - 可以从线程 a 写入串行端口,是否阻塞从线程 b 读取? 2022-01-01
- 由Python将MP3转换为MIDI(类型错误:无法加载插件:mtg-Melodia:Melodia) 2022-01-01
- 尝试制作WhatsApp机器人 2022-01-01
- 与常规 dict 相比,Python manager.dict() 非常慢 2022-01-01
