可以导入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不,一切都不在。没有一个模块在那里。输出仅为:[‘内置’、‘缓存’、‘文档’、‘文件’、‘加载程序’、‘名称’、‘包’、‘路径’、‘规范’]