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中的模块


基础教程推荐
- PermissionError: pip 从 8.1.1 升级到 8.1.2 2022-01-01
- 修改列表中的数据帧不起作用 2022-01-01
- 在Python中从Azure BLOB存储中读取文件 2022-01-01
- Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙? 2022-01-01
- 求两个直方图的卷积 2022-01-01
- 无法导入 Pytorch [WinError 126] 找不到指定的模块 2022-01-01
- 在同一图形上绘制Bokeh的烛台和音量条 2022-01-01
- 使用大型矩阵时禁止 Pycharm 输出中的自动换行符 2022-01-01
- PANDA VALUE_COUNTS包含GROUP BY之前的所有值 2022-01-01
- 包装空间模型 2022-01-01