目的:进行py37项目二进制发布
系统:Ubuntu14.04
python :python3.7.0(因为Ubuntu14.04最高支持到3.7.0)
openssl:openssl-1.1.1-pre8(因为python3.7.X的ssl\_ssl模块最少需要openssl1.0.2)
1.安装编译环境:
sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev
2.安装openssl:
下载openssl-1.1.1-pre8
地址:https://www.openssl.org/source/openssl-1.1.1-pre8.tar.gz
进入 /home/ubuntu/
解压缩:tar -zxvf openssl-1.1.1-pre8.tar.gz 后 cd openssl-1.1.1-pre8
配置:./config --prefix=/usr/local/openssl shared zlib
编辑和安装:make && make install
配置共享库:echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/openssl/lib' >> ~/.bash_profile
source ~/.bash_profile
检验:应该有 /usr/bin/openssl对应/usr/local/openssl/bin/openssl 使用命令openssl version可检测
3.安装python3.7.0:
下载python3.7.0:
地址:https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
mkdir /usr/local/python3 如果存在则先删除再创建
进入 /home/ubuntu/
解压缩:tar -zxvf Python-3.7.0.tgz 后 cd Python-3.7.0
配置:./configure prefix=/usr/local/python3 --with-openssl=/usr/local/openssl --enable-shared --enable-optimizations
编辑和安装:make && make install
配置python3环境变量:
echo 'export PYTHON_HOME=/usr/local/python3 export PATH=$PYTHON_HOME/bin:$PATH' >> ~/.bash_profile
source ~/.bash_profile
创建/usr/bin/下的同步链接:
rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
ln -s /usr/local/python3/bin/python3.7 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3.7 /usr/bin/pip3
验证版本和ssl模块:
python3 -V 应该出现 3.7.0
python3进入后 import ssl和import _ssl不会报错
源码安装完python3.7后要 防止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到文件中
ldconfig #执行ldconfig命令,使修改生效
源码安装完 后卸载自带pip python3 -m pip uninstall pip;去阿里云下载pip-19.0.3.tar.gz python3 setup.py install安装
4.pip源地址改阿里:
ubuntu14.04:vi ~/.pip/pip.conf
widnows:直接在user目录中创建一个pip目录,如:C:\Users\xx\pip,新建文件pip.ini,内容如下:
5.pip安装软件
pip3 install pyinstaller 后查看版本 pyinstaller -v 应该是3.6;若pip报错subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1
解决方法:
find / -name lsb_release
rm -rf /usr/bin/lsb_release
使用pip3 install -r requirements.txt批量安装
其内容:
aiohttp_cors==0.7.0
attrs==19.1.0
altgraph==0.17
amqp==2.5.2
aiohttp==3.5.4
apply-defaults==0.1.4
async_timeout==3.0.1
billiard==3.6.3.0
celery==4.4.2
cycler==0.10.0
chardet==3.0.4
captcha==0.3
future==0.18.2
grpcio==1.26.0
grpcio-tools==1.26.0
importlib-metadata==1.5.0
jsonrpcclient==3.3.5
jsonrpcserver==4.1.2
jsonschema==3.2.0
kiwisolver==1.1.0
kombu==4.6.8
matplotlib==3.2.0rc1
numpy==1.16.4
multidict==4.5.2
opencv-python==4.1.1.26
pefile==2019.4.18
Pillow==5.4.1
protobuf==3.11.1
importlib_metadata==1.5.0
idna==2.8
pycryptodome==3.8.2
PyInstaller==3.6
PyMySQL==0.9.3
pyparsing==2.4.5
pyrsistent==0.9.4
python-dateutil==2.8.1
pytz==2019.3
redis==3.4.1
requests==2.9.2
six==1.13.0
SQLAlchemy==1.3.10
vine==1.3.0
xmltodict==0.12.0
yarl==1.3.0
zipp==3.1.0