文章目录
- 1、简介
- 2、下载Python
- 3、编译Python
- 4、安装PyInstaller
- 5、打包PyInstaller
- 6、相关问题
-
- [6.1 ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips 26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168](#6.1 ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips 26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168)
- [6.2 ImportError: cannot import name 'ParameterSource' from 'click.core' (/tmp/_MEIdZoUtq/click/core.pyc)](#6.2 ImportError: cannot import name 'ParameterSource' from 'click.core' (/tmp/_MEIdZoUtq/click/core.pyc))
- [6.3 python: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory](#6.3 python: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory)
- 结语
1、简介
CentOS 大家应该很熟悉了,英文全称:Community Enterprise Operating System(社区企业操作系统),是 RHEL(红帽企业 Linux) 的免费发行版本,也是目前市面上用得最多的最火的商用 Linux 发行版。
PyInstaller是一个十分有用的第三方库,它能够在Windows、Linux、 Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理。
因为Python中有很多三方包,我们想要这些三方包也包含在里面就需要一个工具,就是pyinstaller,很简单,直接在命令行输入pip install pyinstaller
bash
pip install pyinstaller
2、下载Python
bash
wget https://www.python.org/ftp/python/3.8.10/Python-3.8.10.tgz
bash
# 解压压缩包
tar -zxvf Python-3.8.10.tgz
3、编译Python
bash
# 下载依赖
yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel
# 进入文件夹
cd Python-3.8.10
# 配置安装位置
# ./configure prefix=/usr/local/python3
# ./configure --prefix=/usr/local/python3Dir
./configure --prefix=/usr/local/python3 --enable-shared --with-ssl
bash
# 安装
make && make install
bash
whereis python
# which python
bash
find / -name libpython3.8.so.1.0
添加软连接:
bash
ln -s /usr/local/python3/bin/python3.8 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.8 /usr/bin/pip3
python3 -V
pip3 -V
查看软连接指向:
bash
ll /usr/bin/ | grep python
ll /usr/bin/ | grep pip
软连接:相当于windows的快捷方式,通常我们安装软件后都会在桌面添加一个快捷图片,方便我们快速的操作软件。
CentOS7默认python2.7-----软连接对应是python和python2.7
CentOS7新安装python3.9-----软连接命名为python3
更改yum配置:
bash
vi /usr/bin/yum
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/libexec/urlgrabber-ext-down
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/bin/yum-config-manager
#!/usr/bin/python 改为 #!/usr/bin/python2
4、安装PyInstaller
bash
pip3 install PyInstaller
5、打包PyInstaller
尝试打包操作,发现报错。
bash
# pyinstaller -F main.py
python -m PyInstaller main.spec
复制文件到/usr/lib64里面
bash
cp /usr/local/python3/lib/libpython3.8.so.1.0 /usr/lib64/
cp /usr/local/python3/lib/libpython3.8.so.1.0 /usr/lib/
尝试打包操作,成功。
bash
python3 -m PyInstaller main.spec
6、相关问题
6.1 ImportError: urllib3 v2 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips 26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168
原因:这个错误是由于 urllib3 的新版本需要 OpenSSL 1.1.1+ 以上版本引起的。而当前的 ssl 模块是使用 Libre SSL 2.8.3 编译的,不符合要求。解决这个问题的方法是更新 ssl 模块的版本,使其与 urllib3 的要求相匹配。
requests包引入了urllib3,而新版本的urllib3 需要OpenSSL 1.1.1+以上版本,否则报错:ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+,currently the 'ssl' module is compiled with 'OpenSSL 1.0.2k-fips 26 Jan 2017'. See: https://github.com/urllib3/urllib3/issues/2168,而且去官网查看的时候,发现对于1.1.1之前的版本已经不再支持了,所以需要安装新的版本用于支持。
解答:安装新的版本。
bash
pip install urllib3==1.26.15
6.2 ImportError: cannot import name 'ParameterSource' from 'click.core' (/tmp/_MEIdZoUtq/click/core.pyc)
原因:出现该错误,其根本原因在于是black模块,其模块版本可能过时,升级black模块版本即可。
解答:更新一下相应的库即可。
bash
pip install black --upgrade
6.3 python: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory
原因:没有找到libpython3.8.so.1.0。
bash
find / -name libpython3.8.so.1.0
解答:重新编译python源码的时候,增加参数 --enable-shared
bash
./configure --prefix=/usr/local/python3 --enable-shared --with-ssl
结语
如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;
╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地
//(ㄒoㄒ)//,就在评论处留言,作者继续改进;
o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;
(✿◡‿◡)
感谢各位大佬童鞋们的支持!
( ´ ▽´ )ノ ( ´ ▽´)っ!!!