当前位置: 首页 > 面试题库 >

在Python中正确导入模块

阎建华
2023-03-14
问题内容

如何设置模块导入,以便每个模块都可以访问其他所有模块的对象?

我有一个中等大小的Python应用程序,在各个子目录中都有模块文件。我使用创建了将这些子目录附加到sys.path模块并导入一组模块的模块import thisModule as tm。使用该限定条件引用模块对象。然后,我使用将该模块导入其他模块from moduleImports import *。现在的代码草率,其中有几处通常是重复的。

首先,应用程序失败,因为未分配某些模块引用。单元html" target="_blank">测试时,会运行相同的代码。

其次,我担心递归模块导入会引起问题。导入moduleImports导入thisModule,后者导入moduleImports。。。。

什么是正确的方法?


问题答案:

“我有一个中等大小的Python应用程序,在各个子目录中都有模块文件。”

好。绝对确保每个目录都包含一个__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多个模块,一打左右的软件包。每个模块都会导入所需的内容。没魔术



 类似资料:
  • 注意:我知道有很多关于这个主题的帖子,我已经审阅了相当多的没有成功(请看我在这篇文章底部的参考资料)。 我正试图使用Visual Studio代码在TypeScript中运行一个非常简单的测试,其中我在一个文件中声明一个类并将其导入到另一个文件中。但是,我仍然遇到一个问题,我正在导入的文件无法识别我从另一个文件导出的类的方法。 此时我收到的确切错误消息是: [ts]属性“Get FirstName

  • 问题内容: 在Python中使用相对导入有一个缺点,您将无法再独立运行模块,因为您将得到一个异常: 为了能够执行以下所有操作,我应该如何修改示例代码:和 我正在寻找适用于python 2.6+(包括3.x)的解决方案。 问题答案: 首先,我假设您意识到您编写的内容将导致循环导入问题,因为foo导入bar反之亦然;尝试添加 to test.py,您将看到它失败。必须更改示例才能正常工作。 因此,您要

  • 问题内容: 我正在尝试使用该软件包在R中导入python模块。该模块可以在这里找到。我克隆了存储库并运行成功。如果打开python shell,则可以导入。但是,当我尝试将其导入RStudio时,出现以下错误: 我在macOS Sierra版本10.12.6上并通过Anaconda安装了python 3.6。我也尝试过给出python的路径为: 当我从终端运行python时,我得到: 不确定pyt

  • 我正在尝试导入一个jar文件。我的文件“test.java”包含一行: 注意:我使用的是Mac电脑。

  • 问题内容: 我一直在阅读有关文件的功能。据说我们在包含模块的文件夹中需要一个空文件,以便可以导入这些模块。但是,我尝试将文件夹路径添加到PYTHONPATH(Windows 7中为环境变量)。尽管此文件夹不包含文件,但我仍然可以从该文件夹导入模块。您能否解释一下在不存在的情况下如何导入这些模块? 谢谢, 最好的祝福 问题答案: 把一个文件夹变成一个包。这对于创建某种模块层次结构很有用,您可以在其中

  • 问题内容: 我试图了解关于Python(v2.7)导入机制的最佳实践。我有一个项目开始有所增长,可以说我的代码如下组织: 包名称为,在其下方,我有一个模块,其中包含该类的代码。因此,我对包,模块和类使用了相同的名称,但起初可能不太聪明。 为空,需要导入类,因此文件的一部分如下所示: 但是我后来又重新考虑了这一点,并且我认为最好在文件中包含所有导入内容。因此,我现在看起来像: 而我只需要导入: 虽然