项目中有个打包脚本需要用到pbxproj这个python库,这里也正常通过pip安装了pbxproj,但是实际上执行脚本的时候报了
ModuleNotFoundError: No module named 'pbxproj'
那么出现这个问题第一反应是环境变量添加错了,于是打开自己的.zshrc文件(这里我用的macOS下的iterm工具),发现环境变量都有被正常添加,且这里我在zshrc文件中配置的是3.9的环境变量,并且把python命令指向了
alias python="/usr/bin/python3"
这时候我还没有意识到我在此配置下的python跟python3命令会有什么不同,于是我在环境变量配置正常的基础上,按照着基本的moduleNotFoundError的操作去排查、尝试为什么会出现找不到pbxproj的情况,pip命令查看
pip list
是有的,版本也是正确的,试了下重新install还是不行,这个时候就去到
/Users/xxx/Library/Python
目录下查看发现有3.8、3.9两个版本,这个时候我一开始以为是包装到了3.8上,于是到对应目录下查看了,3.8及3.9都有pbxproj这个库,按道理也不会有问题,我以为可能二者有干扰,这个时候又把3.8的pbxproj删除了,结果还是不行。
最后,我在终端分别输入python及python3两条命令,发现python对应的是3.9,python3对应的是3.11,当时我很疑惑,不清楚python3.11是从哪里冒出来的(之前一直用的都是3.9,所以python、pip等环境变量跟命令都是映射到3.9的),在终端分别直接输入import pbxproj这个库时,3.9是没问题的,3.11是会报错的,看来3.11是没有安装对应的库的。因此问题算是找到了。
那么该如此操作呢?因为脚本里写的是python3命令,所以我满怀希望的把脚本改成python命令执行,这个时候又来告诉我
commond not found: python
我又觉得奇怪了,python跟python3命令在终端直接执行是没问题的,为什么这会又报not found的错误呢,顾不上那么多,直接设置一波python版本看看
ls -l /usr/local/bin/python*
找到本地安装的所以python,找到对应的3.11的路径,设置
ln -s -f /usr/local/bin/python3.11 /usr/local/bin/python
关闭重启terminal,python --version,python3 --version表现一切正常,最后脚本也正常运行了。
最后总结,还是需要管理好自己电脑上的所有的python版本,当因为某些原因升级了python之后,对应的python的默认版本也被修改,这时候就容易出现一些奇奇怪怪的问题。