python - 我无法理解 python3 中的导入

标签 python file python-3.x import

我查看了许多网站和许多相关问题,但遵循这些问题的解决方案似乎仍然没有帮助。我想我可能错过了一些东西,所以就开始吧。

我的项目是创建一个 DM 工具来管理桌面角色扮演游戏。我需要能够将我的项目分成许多不同的文件,以便使一切井井有条。 (到目前为止)我只有三个文件正在尝试使用。我有我的主文件,我称之为 dmtool.py3 ,我有一个名为 classdef.py3 的类定义文件。 ,我有一个用于创建竞赛对象的文件,名为 races.py3

1] 我的第一个问题是关于导入单个文件。我尝试以几种不同的方式组织文件,因此假设我的所有三个文件都位于同一目录中。

如果我想将 classdef.py3 中的类定义导入到主文件 dmtool.py3 中,我该怎么做? import classdefimport classdef.py3似乎无法正常工作,说他们没有具有该名称的模块。

2] 所以我制作了一个模块,它似乎可以工作。我通过创建一个名为 defs 的子目录来做到这一点并将 classdef.py3 和 races.py3 文件放入其中。我创建了__init__.py3文件,然后输入 import defsdmtool.py3 。作为测试,我输入 x = 1races.py3的最顶部并输入 print("X =", defs.x)dmtool.py3 。我收到一条错误消息,指出该模块没有属性 x。

所以我想我的第二个问题是是否可以仅使用其他文件中的变量。我会使用类似 defs.x 的东西吗?或defs.races.xraces.x或者也许只是x ?我似乎找不到那个有效的。我需要弄清楚这一点,因为我将使用将在 races.py3 中定义的类的特定实例。文件。

3] 我的第三个问题是一个简单的问题,是由前两个问题衍生出来的。现在races.py3classdef.py3位于同一模块中,如何使一个模块访问另一个模块。 races.py3必须使用 classdef.py3 中定义的类。

<小时/>

我真的很感激任何帮助。就像我说的,我尝试查找与导入相关的其他问题,但他们的简单解决方案似乎会出现相同的错误。我没有发布我的具体文件,因为除了我提到的之外,只有非常简单的打印行或类定义。没有什么会影响导入。

谢谢, 克里斯

最佳答案

首先,不要使用.py3作为文件扩展名。 Python 无法识别它。

Python 3 的导入系统实际上非常简单。 import foo 通过 sys.path 查找名为 foo 的包(目录)或模块(.py 文件)。

sys.path 包含通常安装库以及 Python 标准库的各种标准目录。 sys.path 的第一个条目通常是 __main__ 脚本所在的目录。如果您通过 python -m foo.bar 调用 Python,第一个条目将是包含 foo 包的目录。

相对导入使用不同的语法:

from . import foo

这意味着“从包含当前模块的包中导入 foo 模块或包。” PEP 328中有详细讨论。 ,如果您不想为每次导入指定包的整个结构,这会很有用。

关于python - 我无法理解 python3 中的导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30334288/

相关文章:

python - 棋盘上的皇后在 Python 中随机解决

Python行文件迭代和奇怪的字符

python - 为什么 scipy.io.wavfile.read 不返回元组?

c: 返回目录中的所有文件名

file - 如何在powershell中比较两个csv文件而不指定属性

python - 如何解析类属性的名称?

python - 比较两个以不同方式缩放或以不同方式压缩的相似图像

python - Django:在循环中保存查询集项是否有效?

java - 替代 JAVA WAR/ZIP/JAR 阅读器/操纵器库

python - Pandas 从 concat() 中按键切片