0

尝试加载 cogs 时收到此错误消息:

parent = import (parent_name, fromlist=[' path ']) ModuleNotFoundError: No module named 'cog'

代码:

COGS = [path.split("\\")[-1][:-3] for path in glob("./cogs/*.py")]

client = commands.Bot(command_prefix="!", case_insensitive=True)

for cog in COGS:
    print(f"loading cog... {cog}")
    client.load_extension(f"cogs.{cog}")

在此处输入图像描述

任何想法为什么?谢谢!

4

2 回答 2

0

我很高兴你能弄清楚,但如果你想让你的代码在任何平台上工作,并且省去指定分隔符和切片的麻烦,你可以使用 Python 的pathlib模块,它可以让很多事情变得更干净、更方便

from pathlib import Path

cogs = [path.stem for path in Path('cogs').glob('*.py')]
  • Path('cogs')(或者,等效地,Path('./cogs')),创建一个代表您的 cogs 文件夹的 Path 对象。
  • 这个 Path 对象有一个glob方法,它返回代表每个匹配文件的 Path 对象。(注意:您不需要为此导入glob模块;它是 Path 对象的一部分。)
  • 路径对象具有方便的属性,例如name( 'cog.py')、extension( '.py') 和stem( 'cog')。

pathlib在这一点上(2014 年)已经有好几年了,并且包含在标准的 Python 发行版中,但是那里的很多教程和食谱还没有跟上。它可以使您的代码更加简洁、可移植且更易于修改。

(特别是,您始终Path()使用正斜杠指定路径,它会自动处理不同平台所需的分隔符转换。)

于 2021-02-15T17:29:41.677 回答
0

好吧,我想通了,所以希望这能帮助解决这个问题的人。

对于 Windows,目录分隔符是 2 个反斜杠。但对于 Linux,1 个正斜杠。

所以,我从这个改变这一行:

COGS = [path.split("\\")[-1][:-3] for path in glob("./cogs/*.py")]

对此:

COGS = [path.split("/")[-1][:-3] for path in glob("./cogs/*.py")]
于 2021-02-15T17:00:55.913 回答