出于一些使用上的需求,我必须在linux环境下编译打包python文件,这里用的是通用的pyinstaller。
(以下命令默认以管理员身份运行,如果安装中遇到权限问题,请切换管理员身份或者在命令前加上sudo)
首先,我是从python官网下载的https://www.python.org/ftp/python/3.7.7/Python-3.7.7.tgz
python包。
将python包放到linux环境中后,执行命令:
tar -zxvf Python-3.7.2.tgz
解压文件。
之后先执行一下这条命令,防止使用python的过程中出错:
yum install libffi-devel -y
如果不执行此条命令,安装libffi-devel的话,在使用过程中会遇上“ModuleNotFoundError: No module named ‘_ctypes‘”的错误。
之后,cd进入python文件夹,执行以下命令:
mkdir -p /usr/local/python3
./configure --prefix=/usr/local/python3
make && make install
等这三条命令执行完后,再执行以下命令:
ln -s /usr/local/python3/bin/python3.7 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3
/usr/local/bin目录是给用户放置自己的可执行程序的地方,我们设置了软连接之后,就在系统中的任意地方使用python3 和 pip3 这两个命令。
之所以设置成python3,是因为centos7自带了python2,我们这里是为了区分开两个程序。
之后,执行:
pip3 install pyinstaller
安装pyinstaller。如果遇上问题,请先按照提示线更新升级pip3的版本,再执行一下本命令。
再执行:
ln -s /usr/local/python3/bin/pyinstaller /usr/local/bin/pyinstaller
之后,随便编译打包一个程序,如果成功,则成功,如果失败,则可参考以下情况:
错误提示一:打包失败,并提示:
* On Debian/Ubuntu, you would need to install Python development packages
* apt-get install python3-dev
* apt-get install python-dev
* If you're building Python by yourself, please rebuild your Python with `--enable-shared` (or, `--enable-framework` on Darwin)
这种时候,请重新编译安装一下python,按照提示添加参数 --enable-shared
./configure --prefix=/usr/local/python3 --enable-shared
make && make install
二:打包失败,并提示:
/usr/local/python3/bin/python3.7: error while loading shared libraries: libpython3.7m.so.1.0: cannot open shared object file: No such file or directory
这种时候,请这样操作:
cd /etc/ld.so.conf.d
vim python3.conf
在编辑页面添加: usr/local/python3/lib,然后退出保存就可以了。
此处添加的内容为库文件所在的位置。如果你cd到这个位置,可以看见libpython3.7之类的文件。
此处是为了添加动态库。
之后,再执行ldconfig, 就可以了。