Python 已经安装模块,但是 import 时仍然报错 (已自己排查、百度,但未果,寻求帮助)

Young · 2019年09月21日 · 最后由 Young 回复于 2019年10月16日 · 5666 次阅读

直接描述容易啰嗦,分条叙述:

【背景】
1、自己实现了个小功能,考虑到团队成员都可能会用到,就封装成了 python 库(产物为.tar.gz 的压缩包,以下称为自建库)
2、新建 python 工程,把.tar.gz 自建库复制到新建工程目录下、解压缩,然后命令行下进入解压后的目录,执行 sudo python setup.py install 命令安装模块
3、在新建工程中,import 引入库中的类,并调用方法、使用功能

【遇到的问题】
1、最开始测试的时候,很顺利能完成调用。最近在其他工程中使用上面的方式,使用自建库,模块安装没有报错,可是 import 报错,引不进来

自己排查了工程配置、百度了同类问题,均未果

自己猜测可能有 2 方面的问题:(1)模块安装虽然没有报错,但是哪里肯定出问题了,比如环境问题,到时模块实际没有安装成功;(2)import 时,没有找到自建库,所以不能引用

现在已经不知道从何下手再确认问题原因了。有没有遇到过同类问题的同行,可以略微指点一二?感激不尽

【附】具体报错

共收到 19 条回复 时间 点赞

可能检查下 “其他工程下” 的现有的包名或模块名的是否有与要导入的一样的

在其他工程中使用上面的方式,使用自建库,模块安装没有报错,可是 import 报错,引不进来

可以看看,用不了自建库和用得了的项目之间,有什么差异?import 报错,报错的具体错误提示发一下?虽然步骤说得很详细,但关键的日志和代码信息没给出,其实还是不足以协助排查定位问题的。

pipenv 管理项目依赖试试

北溟 回复

确认了下,没有同名的包名/模块名。不放心,新建了工程,安装模块,但还是 import 报错。
PS: 确认过眼神,是个简单、棘手又奇怪的问题,继续找原因

陈恒捷 回复

(1)今天新建了工程,跟之前用得了自建库的工程配置上无差,还是一样的问题
(2)自建库调用及具体报错如下:

先确认一个点:你这个库,使用的项目是要必须把源代码放到自己的项目目录的吗?

你截图里这种情况,目前能想到的一种可能,是 app_auto_run-0.0.3 里面直到 adr 这个类文件之间的路径,有部分文件夹里缺少了 __init__.py ,导致这个文件夹没有被 python 认为是一个有效的 module 。

如果代码不敏感,可以把你截图里整个项目(包括 tmp.py、自建库)都上传 github 之类的地方,整体看下?

你截图里看不到 adr 这个目录,是路径不对吗? 比如试下从项目根目录开始引入?

sudo python3 setup.py install 试试

“2、新建 python 工程,把.tar.gz 自建库复制到新建工程目录下、解压缩,然后命令行下进入解压后的目录,执行 sudo python setup.py install 命令安装模块”

试试 python3 setup.py install ,因为看你报错的图不像会是虚拟环境的问题,可能装到了 python2 没装到 python3

Young #10 · 2019年09月23日 Author
Jerry li 回复

adr 是自建库的一个目录,也是被调用方法所在的目录。在 app_auto_run-0.0.3 目录下

Young #11 · 2019年09月23日 Author
北溟 回复

还是老样子,估计还不是 python 版本的问题

Young #12 · 2019年09月23日 Author
a2021 回复

还是一样,估计不是 python 版本的问题

Young 回复

那我猜测你的 import 相对路径不对,少了 app_auto_run 这个层级,你加上试试

python 安装的包在 site-packages 目录下,看一下该目录下是否存在 adr 目录;
顺便可以贴一下你的 setup.py 文件

1、同名 2、路径 3、版本

猜测你的机器上有安装了多个 python,先卸载掉其它的 python 版本。

解决了吗

【结贴】
国庆前就解决了,但是那几天 testerHome 一直打不开,没有及时回复。问题已经解决

【原因及解决】
1、原因
本机装了 anaconda 环境,pip install 的时候,模块实际安装到了 anaconda 下的 lib 目录,但是 python 解释器环境是是/usr/local/lib/python3.7 的默认环境
import 的时候实际会到/usr/local/lib/python3.7 下扫描需要的模块,但是所需的模块已经安装到了其他目录,所以找不到需要导入的模块,总是报错
2、解决方法
修改 Project Interpreter 路径为 anaconda 下的 python 环境路径

【鸣谢】
感谢 @ 北溟 @user19 @Jerry li @keke @arrow @keiskei @dengyl2018 @ 陈恒捷
谁也不是闲人,都有工作在手,十分感谢大家工作之余耐心地解答、不厌其烦地答复,充分地感受到大家的帮助,再次感激

Young #19 · 2019年10月16日 Author
毛驴 回复

解决了哈,见上一条回复

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册