如何将一个文件导入到另一个python文件中而不将其注册为模块

rqmkfv5c  于 11个月前  发布在  Python
关注(0)|答案(3)|浏览(106)

在我的桌面上,我有一个名为“programming”的文件夹,在该文件夹中有另一个名为“Chessbot”的文件夹,在该文件夹中有两个文件,“ChessEngine.py”和“ChessMain.py”。
我试图将ChessEngine.py导入到ChessMain.py,但当我尝试时,它一直将chessengine.py注册为模块,并导致模块未找到错误。
在'ChessMain.py'中,这是第一行:

from Chessbot import ChessEngine

字符串
显然,我试图导入此文件'ChessEngine.py',但当我运行代码时,它显示为ModuleNotFoundError: No module named 'Chessbot'
显然它认为Chessbot是一个模块而不是一个文件,我该如何解决这个问题?

pod7payv

pod7payv1#

你是正确的,Chessbot不是一个模块,它是一个包含两个.py文件的目录。
这里的问题是,你实际上是在引用Chessbot作为一个模块,而它不是。
保存在相同目录中的文件可以简单地导入,因此删除from Chessbot,只需导入import ChessEngine
以下是我的ChessEngine.py:

def doAChess():
    print("Did a chess!")

字符串
以下是我的ChessMain.py:

import ChessEngine
ChessEngine.doAChess()


我强烈建议遵循一些初学者python教程并阅读文档

wgxvkvu9

wgxvkvu92#

如果文件夹中间有两个文件,则可以按照如下方式导入所需功能:

1.无需从文件夹本身导入文件

from Chessbot import ChessEngine

字符串
1.您可以导入文件本身,然后使用点调用所需的FAM函数

import ChessEngine

ChessEngine.your_func()

ChessEngine.your_variable


1.或者,您可以直接从文件导入所需的功能,而无需立即导入文件本身

from ChessEngine import your_func, your_variable

your_func()
print(your_variable)

pkwftd7m

pkwftd7m3#

尝试创建一个空文件__init__.py,并将其放在Chessbot下,也可能放在programming下。这将使目录被视为module
如果你对python模块和导入的工作方式感兴趣,请随意查看answer

相关问题