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

可以导入python包,但不能导入其模块,python,import,module,package,python-3.6,Python,Import,Module,Package,Python 3.6,我正在编写一套用于脚本编写和调试的工具,我正在打包这些工具。虽然我可以导入包本身,但每当我尝试导入包中的模块时,都会得到一个ModuleNotFoundError package_dir │ README.md │ setup.py │ └───package │ │ __init__.py │ │ │ └───utils │ │ __init__.py │ │ image_utils.py │ │ ... │

我正在编写一套用于脚本编写和调试的工具,我正在打包这些工具。虽然我可以导入包本身,但每当我尝试导入包中的模块时,都会得到一个
ModuleNotFoundError

package_dir
│   README.md
│   setup.py   
│
└───package
│   │   __init__.py
│   │
│   └───utils
│       │   __init__.py
│       │   image_utils.py
│       │   ...
│   
└───...
安装: 使用
python setup.py安装
似乎可以很好地工作,我可以成功地
导入软件包

\uuuu init\uuuuu.py: 我的理解是,因为我运行的是python3.6,所以我不需要_init ____; py.py文件,但我在package/和utils/下尝试了使用和不使用_init ___; py.py的所有组合,环境没有任何变化。无论配置如何,
import-package
都可以工作,我无法导入任何模块

导入方式: 我在包结构外的Jupyter笔记本中,我尝试了以下方法:

导入包
(工作)

来自程序包导入utils的
(不工作:
ImportError

从package.utils导入图像\u utils
(不工作:
ModuleNotFoundError

来自package.utils.image\u utils导入函数
(不起作用:
ModuleNotFoundError

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


我浏览了教程、文档和堆栈溢出。有人看到我遗漏了什么吗?

我发现以前的版本(在所有模块目录中没有正确的uuu init uuuuu.py文件,或者在包的uuu init uuuu.py中没有导入语句)阻止识别我的最新安装

要解决此问题,我首先尝试删除安装期间创建的所有文件:
python setup.py安装--记录installfiles.txt

但这并没有告诉我需要移除的所有东西

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

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

    我发现以前的版本(在所有模块目录中没有正确的uuu init_uuuuuuu.py文件,或者在包的uuuu init_uuuuuuuu.py中没有导入语句)阻止了我的最新安装被识别

    要解决此问题,我首先尝试删除安装期间创建的所有文件:
    python setup.py安装--记录installfiles.txt

    但这并没有告诉我需要移除的所有东西

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

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

    您不需要在标题中添加“(Python3.6)”。它可以作为标记使用。您能给我们看一下您的_uuuinit_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu<代码>导入包
    2<代码>打印(目录(包))。一切都在吗?@s3n0不,一切都不在。没有一个模块在那里。输出只是:['builtins'、'cached'、'doc'、'file'、'loader'、'name'、'package'、'path'、'spec']您不需要在标题中添加“(Python3.6)”。它可以作为标记使用。您能给我们看一下您的_uuuinit_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu<代码>导入包2<代码>打印(目录(包))。一切都在吗?@s3n0不,一切都不在。没有一个模块在那里。输出仅为:[‘内置’、‘缓存’、‘文档’、‘文件’、‘加载程序’、‘名称’、‘包’、‘路径’、‘规范’]