今天想要在测试环境中安装安装Pyinstaller以便打包(测试环境未联网,所有的包都从外部获取),没想到装了好久死活没有成功,主要遇到的问题如下:
1.安装Python3.7后,执行pip提示:
WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available.
2.正常在在线环境中能够安装的Pyinstaller,放到离线环境中安装时报错:
ERROR: pyinstaller-4.9-py3-none-manylinux2014_x86_64.whl is not a supported wheel on this platform.
3.终于成功安装Pyinstaller之后,界面还报错:
ModuleNotFoundError: No module named '_ctypes'
以上3点,分别处理:
1.起初我以为Pyinstaller无法安装与Python无法使用ssl模块有关,但是经过各种尝试,排除了这种想法(因为我解决了该提示之后,Pyinstaller依然无法安装),解决方法就是安装下面这些包:
sqlite-devel openssl-devel readline-devel xz-devel xz-devel tk-devel gdbm-devel
yum install -y bzip2-devel sqlite-devel openssl-devel readline-devel xz-devel xz-devel tk-devel gdbm-devel
至此第一个问题解决。
2.第2个问题经过确认,发现在安装Python3.7后自带的pip最高仅支持manylinux2010_x86_64,确认方法如下:
>> import pip._internal
>> print(pip._internal.pep425tags.get_supported())
解决方案就是升级当前pip版本,升级后就可以正常安装Pyinstaller;
3.第3个问题参考一些同学的解读:是因为python3中有个内置模块叫ctypes,它是python3的外部函数库模块,通过它调用Linux系统下的共享库,这个模块需要使用centos7中外部函数库的开发链接库。但因为centos7没有安装外部函数库的开发链接库软件包,因此报"ModuleNotFoundError: No module named '_ctypes'"
的错误,解决方法如下:
yum install libffi-devel -y