一、问题起源
问题源于本人使用Pycharm2019.2与PyQt5.10.0制作小程序,发现Pycharm上能够运行,然后使用pyinstaller打包后无法运行,在Terminal上运行打包的程序,报Impoere:Nomodule Name sip的问题;这个问题让我从晚上10点一直困扰到凌晨2点;发现网上这问题的解决资料很杂,对标题提到的环境也不是很适用,故此出此文,有问题望多多指正。
pyinstaller打包指令如下:
pyinstaller -F xxxxx.py
以上指令在dist文件生成一个exe程序
或者
pyinstaller -D xxxxx.py
二、问题解决方式
三大步:检查路径、检查版本、安装相关
(1)路径:包括python路径、pip路径、pyinstaller路径
终端中运行一下三条指令检查路径
which python 检查python路径 python路径应该在/usr/bin/python
which pip 检查pip路径 pip路径应该在/usr/bin/pip
which pyinstaller 检查pyinstaller路径 pyinstaller路径应该在/usr/local/bin/pyinstaller
任何一个路径没法查看,不要着急安装,否则安装不对等于白费!!!!!
以上路径保证和我一样的话,大概率能解决问题。本人认为路径不一样也不一定不行,建议最好检查
Pycharm -> setting -> Project -> Project Interpreter
设置的python路径是否和which python路径一致,个人认为很重要。
如果python和pip的默认路径都是在/usr/local/bin 用户目录下,本人就是如此,这时就有问题了。
解决方式:
终端运行:以删除用户目录下的python、pip
sudo rm /usr/local/bin/pip*
sudo rm /usr/local/bin/python*
然后再检查路径是否还在/usr/bin目录下,如果还在请自行想办法。
(2)版本:sip版本、PyQt5版本、pyinstaller版本、pip版本
第一步(1)的路径检查完事后,需要检查python默认sip版本、pyinstaller版本、pip版本
python默认sip版本检查 ->终端运行python后 -> from sip import SIP_VERSION_STR -> print(SIP_VERSION_STR) ->4.17
pyinstaller -v 查看pyinstaller版本 需要pyinstaller 是3.4版本
pip -V 查看pip版本 尽量保持pip是新的版本,本人是19.2.2
没有检查没关系,看接下来安装
(3)安装:
python2.7的安装我就不提了,网上教程很多。
pip安装:
sudo apt-get install python-pip
pip更新:
pip install -U pip
pyinstaller 3.4版本安装:
sudo pip install pyinstaller==3.4
PyQt5安装
sudo apt-get install python-pyqt5
安装好后,必须重启电脑,否则是不能用的,我也是重启后才能用,刚装完不能用,哎~~~
(4)如果上面的方法没帮的到你,我还提供几个我觉得可能可行的方案
1.修改pyinstaller默认调用模块
进入/usr/local/bin/目录下,用终端和vim修改pyinstaller,添加你用到的模块;
import PyQt5
import sip 等等。。。
2.在原工程代码上导入相关sip模块,其他文章普遍是这个方法,估计有挺大概率好使吧,反正我是没成功。
from PyQt5 import SIP
import sip
等等...