Python2.7.12+Ubuntu16.04+PyQt5+pyinstaller打包后运行报No module Name sip错误的问题

一、问题起源

        问题源于本人使用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  

等等...

 

                

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值