gpt4 book ai didi

从子目录导入 Python3.5 不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 10:03:33 25 4
gpt4 key购买 nike

我有一堆 python 脚本,只是想通过将它们中的大部分放入子目录来构建它们。但是,当我尝试从子目录加载脚本时,python 会给出不同的错误消息,具体取决于我尝试导入子目录脚本的方式。

我的子目录是这样的:

io
├── dataset_creator.py
└── read_data.py

在我的父目录中的脚本中,当我这样做时

from io import dataset_creator

发生此错误:

ImportError: cannot import name 'dataset_creator'

当我这样做

import io.dataset_creator

发生此错误:

ImportError: No module named 'io.dataset_creator'; 'io' is not a package

我也将 __init__.py 移到了 io/中,但它根本没有帮助,并且在 io/前面加了一个点,但没有成功。 python 文档说我应该添加 __init__.py 然后一切都应该工作,基本上(据我解释)。

有人可以帮我吗?如果我遗漏了一些重要信息,请告诉我,我会添加。

干杯,雅各布

编辑:

正如你们中的许多人所说,io 已经是 python 中的另一个包,所以将我的 io/重命名为不同的东西解决了这个问题(同时还有 __init__.py)。非常感谢!我知道有多个正确答案,但是,我只能将一个标记为正确答案,抱歉。

最佳答案

名称io 已被a standard library module 使用.由于它是解释器使用的非常基本的模块之一,它会在启动过程中加载,在您的任何代码运行之前。这意味着当 Python 看到您导入 io.dataset_creator 的请求时,它已经在 sys.modules 中获得了一个 io 模块。由于该模块不是包,它不会尝试加载您在 io 包中编写的其他子模块(即使您设置了模块搜索路径以便您的包领先于标准库)。

您应该重命名您的io 包。一种选择是将其放入另一个包中(mypackage.io.dataset_creator 应该可以正常工作)。您也可以将名称 io 替换为更具体的名称(例如 myproject_io)。

关于从子目录导入 Python3.5 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42143418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com