gpt4 book ai didi

python - 可以导入 python 包,但不能导入其模块

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

我正在编写一组用于脚本编写和调试的工具,并将其打包。虽然我可以导入包本身,但我得到了 ModuleNotFoundError每当我尝试导入包中的模块时。

package_dir
│ README.md
│ setup.py

└───package
│ │ __init__.py
│ │
│ └───utils
│ │ __init__.py
│ │ image_utils.py
│ │ ...

└───...

安装:使用python setup.py install似乎工作正常,我可以成功 import package

__init__.py:我的理解是,我不需要 __init__.py 文件,因为我运行的是 python3.6,但我已经尝试了 package/和 utils/下有或没有 __init__.py 的所有组合,情况没有任何变化。无论配置如何,import package有效,但我无法导入任何模块。

我如何导入:我在包结构之外的 Jupyter 笔记本中,并且尝试了以下操作:

import package (作品)

from package import utils (不起作用:ImportError)

from package.utils import image_utils (不起作用:ModuleNotFoundError)

from package.utils.image_utils import func (不起作用:ModuleNotFoundError)

我还尝试使用相对导入导入包的 __init__.py ,但没有成功。我绝对不想每次想使用这些工具时都使用 sys.path.insert()。

我查阅了教程、文档和堆栈溢出。有人看到我错过了什么吗?

最佳答案

我发现以前的版本(所有模块目录中没有正确的 __init__.py 文件或包的 __init__.py 中没有导入语句)导致我的最新安装无法被识别。

为了解决这个问题,我首先尝试删除安装过程中创建的所有文件:python setup.py install --record installfiles.txt

但这实际上并没有向我展示我需要删除的所有内容。

  1. 我还删除了包中的构建和缓存文件:build/、package/、dist/和 .egg-info/(以及所有缓存)
  2. 然后我删除了站点包:/anaconda3/envs/[env_name]/lib/python3.6/site-packages/[package_name]
  3. 并从 Easy-install .pth 中删除了该软件包:/anaconda3/envs/[env_name]/lib/python3.6/site-packages/easy_install.pth
  4. 以及 .egg-info:/anaconda3/envs/[env_name]/lib/python3.6/site-packages/[package-name].egg-info

这使我能够正确安装。感谢大家的帮助!

关于python - 可以导入 python 包,但不能导入其模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55173635/

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