python - 导入仅在一个文件中使用的 python 模块

标签 python import module package

更具体地说,假设我有许多 .py 文件,其中 main.py 导入诸如 os、pygame、math 和我所有其他 .py 文件、mymodule01.py 等的东西。

我的问题是,每当 main.py 调用我的一个 .py 文件并且该文件包含类似 os.listdir() 的内容时,我总是收到一条错误消息,提示“未定义 os”之类的内容。

我应该只在我编写的每个 .py 文件中导入所有必需的模块,还是有更好的方法,比如每个文件都可以识别的集中导入?特别是对于 pygame,这会非常困惑,因为我必须在每个文件中初始化 pygame 才能使用它的功能,更不用说如果我想在屏幕上显示一些东西。

python 模块和包文档没有太大帮助,或者我真的很慢,还考虑到在遵循文档之后我在添加例如后不断收到未找到的错误在包含文件夹的 init.py 文件中导入 mymodule01.py。

最佳答案

我想您的印象可能是“导入”在其他语言中的作用类似于“包含”。它没有。

每个模块对象都是一个单例。不存在性能下降或多次初始化模块代码的危险。

此外,每个文件都有自己的范围,因此在您的示例中,如果您在 main.py 中定义 foo = 1foo 将不会在 我的模块01.py。你必须 import main; main.foo 来查看它(不是你应该看到的)

你提示,但这是一个比 include

更好的系统

关于python - 导入仅在一个文件中使用的 python 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8370487/

相关文章:

mysql - 将 CSV 导入 SQL - 日期格式问题 : Zeroes

java - 在 Java 中使用 import 语句自动删除显式包声明

javascript - node.js 本地模块 :cannot find module error

Python - 正则表达式 - 对日本地址进行排序

python - 在表单字段中添加额外信息并在渲染 django 模板时使用它

python - 元组到日期时间

haskell - 在 Haskell 中写或不写 `module Main where`

python - 多态性和pybind11

python - __init__.py 是否必须在 python 应用程序的每个目录中?

ruby - ruby 模块是否有可能获取定义包含该模块的类的文件的目录?