直接描述容易啰嗦,分条叙述:
【背景】
1、自己实现了个小功能,考虑到团队成员都可能会用到,就封装成了 python 库(产物为.tar.gz 的压缩包,以下称为自建库)
2、新建 python 工程,把.tar.gz 自建库复制到新建工程目录下、解压缩,然后命令行下进入解压后的目录,执行 sudo python setup.py install 命令安装模块
3、在新建工程中,import 引入库中的类,并调用方法、使用功能
【遇到的问题】
1、最开始测试的时候,很顺利能完成调用。最近在其他工程中使用上面的方式,使用自建库,模块安装没有报错,可是 import 报错,引不进来
自己排查了工程配置、百度了同类问题,均未果
自己猜测可能有 2 方面的问题:(1)模块安装虽然没有报错,但是哪里肯定出问题了,比如环境问题,到时模块实际没有安装成功;(2)import 时,没有找到自建库,所以不能引用
现在已经不知道从何下手再确认问题原因了。有没有遇到过同类问题的同行,可以略微指点一二?感激不尽
【附】具体报错
可能检查下 “其他工程下” 的现有的包名或模块名的是否有与要导入的一样的
在其他工程中使用上面的方式,使用自建库,模块安装没有报错,可是 import 报错,引不进来
可以看看,用不了自建库和用得了的项目之间,有什么差异?import 报错,报错的具体错误提示发一下?虽然步骤说得很详细,但关键的日志和代码信息没给出,其实还是不足以协助排查定位问题的。
pipenv 管理项目依赖试试
确认了下,没有同名的包名/模块名。不放心,新建了工程,安装模块,但还是 import 报错。
PS: 确认过眼神,是个简单、棘手又奇怪的问题,继续找原因
先确认一个点:你这个库,使用的项目是要必须把源代码放到自己的项目目录的吗?
你截图里这种情况,目前能想到的一种可能,是 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
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 @ 陈恒捷
谁也不是闲人,都有工作在手,十分感谢大家工作之余耐心地解答、不厌其烦地答复,充分地感受到大家的帮助,再次感激