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中的模块
基础教程推荐
- 在 Django Admin 中使用内联 OneToOneField 2022-01-01
- 对多索引数据帧的列进行排序 2022-01-01
- kivy 应用程序中的一个简单网页作为小部件 2022-01-01
- matplotlib 设置 yaxis 标签大小 2022-01-01
- Python 中是否有任何支持将长字符串转储为块文字或折叠块的 yaml 库? 2022-01-01
- Kivy 使用 opencv.调整图像大小 2022-01-01
- Python,确定字符串是否应转换为 Int 或 Float 2022-01-01
- 究竟什么是“容器"?在蟒蛇?(以及所有的 python 容器类型是什么?) 2022-01-01
- 比较两个文本文件以找出差异并将它们输出到新的文本文件 2022-01-01
- 在 Python 中将货币解析为数字 2022-01-01
