我很难理解python3的导入

2024-10-02 20:41:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我看过很多网站和许多相关的问题,但遵循这些问题的解决方案似乎还是没有帮助。我想也许我错过了什么,所以就这样。在

我的项目是创建一个DM的工具来管理桌面角色扮演游戏。我需要能够把我的项目分割成许多不同的文件,以保持一切井井有条。(到目前为止)我只想处理三个文件。我有一个名为dmtool.py3的主文件,有一个名为classdef.py3的类定义文件,还有一个用于创建race对象的文件races.py3。在

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

如果我想从类定义.py3进入我的主文件dmtool.py3型,我该怎么做?^{{cd5}似乎不能正常工作。在

2]于是我制作了一个模块,它似乎可以工作。我通过创建一个名为defs的子目录并将类定义.py3以及种族.py3把文件放进去。我创建了__init__.py3文件,并将import defs放入dmtool.py3。作为测试,我把x = 1放在races.py3的最顶端,并把print("X =", defs.x)放在dmtool.py3中。我得到一个错误,说模块没有属性x

所以我想我的第二个问题是是否可以只使用其他文件中的变量。我会使用defs.xdefs.races.x或{}或者简单地x?我好像找不到一个有效的。我需要弄清楚这一点,因为我将使用在races.py3文件中定义的类的特定实例。在

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


我真的很感激你的帮助。就像我说的,我试着查找其他与进口有关的问题,但他们简单的解决方法似乎也出现了同样的错误。我没有发布我的具体文件,因为除了我提到的,只有非常简单的打印行或类定义。不会影响进口。在

谢谢, 克里斯


Tags: 模块文件工具项目定义网站错误py3
2条回答

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

Python3的导入系统实际上非常简单。import foosys.path中查找名为foo的包(目录)或模块(.py文件)。在

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

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

from . import foo

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

启动python并键入以下命令:

>>> import sys
>>> sys.path

路径是python查找库的目录列表。如果您的模块不在列表中,则找不到任何模块。在

相关问题 更多 >