Python3编译安装以及虚拟运行环境
一、yum安装python2 pip和python36 pip3
yum install -y python36
yum install -y python36-setuptools
yum install -y python36-pip
python3 -m pip install --upgrade pip # pip升级
yum -y install epel-release # Centos6.8安装epel源
yum -y install python-pip
二、手动安装pip
# wget --no-check-certificate https://pypi.python.org/packages/source/s/setuptools/setuptools-18.0.1.tar.gz
# tar xf setuptools-18.0.1.tar.gz
# cd setuptools-18.0.1
# python setup.py install
# wget --no-check-certificate https://pypi.python.org/packages/source/p/pip/pip-1.5.4.tar.gz
# tar -xf pip-1.5.4.tar.gz
# cd pip-1.5.4
# python setup.py install
# pip install --upgrade pip
三、编译安装python36
[root@web01 ~]# wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz
[root@web01 ~]# tar xf Python-3.6.0.tgz
[root@web01 ~]# cd Python-3.6.0
[root@web01 Python-3.6.0]# ./configure --with-ssl
[root@web01 Python-3.6.0]# make
[root@web01 Python-3.6.0]# make install
编译安装时报以下错误的解决办法:
zipimport.ZipImportError: can't decompress data; zlib not available
1、打开终端,输入一下命令安装zlib相关依赖包:
[root@web01 ~]# yum -y install zlib*
2、进入 python安装包,修改Module路径的setup文件:
[root@web01 Python-3.6.0]# vim Module/Setup
找到一下一行代码,去掉注释:
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
去掉注释
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
3、重新进入终端,进入python的安装包路径下执行:
[root@web01 Python-3.6.0]# ./configure --with-ssl
[root@web01 Python-3.6.0]# make && make install
四、Python虚拟环境
[root@web01 ~]# mkdir python3-env
[root@web01 ~]# cd python3-env
[root@web01 python3-env]# pyvenv env # 创建名称为env的虚拟环境(或使用python3 -m venv env命令)
[root@web01 python3-env]# python3 -m venv venv # 创建名称为venv的虚拟环境
[root@web01 python3-env]# source env/bin/activate # 进入虚拟环境
(env) [root@web01 python3-env]# deactivate # 退出虚拟环境
1、Python在非虚拟环境和虚拟环境的路径:
[root@web01 ~]# which python
/usr/bin/python
(env) [root@web01 python3-env]# which python
/root/python3-env/env/bin/python
2、PATH环境变量在激活前后也不一样
[root@web01 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
[root@web01 python3-env]# source env/bin/activate
(env) [root@web01 python3-env]# echo $PATH
/root/python3-env/env/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
说明:
Python虚拟环境的工作原理主要就是操作环境变量
创建python2的虚拟环境需要先安装pip install virtualenv
virtualenv模块使用方法和python3的pyvenv模块一样
Python3默认已经安装了pyvenv模块
3、进入虚拟环境用pip安装模块报以下错误解决办法
pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available
[root@web01 Python-3.6.0]# yum -y install openssl-devel # ubantu,debian安装apt-get install openssl-dev
[root@web01 Python-3.6.0]# vim Modules/Setup # 编辑Setup文件去掉下图中几行的注释
[root@web01 Python-3.6.0]# ./configure --with-ssl # 重新编译安装
五、Python36以上版本安装
1、安装依赖包
yum -y install zlib zlib-devel libffi-devel sqlite-devel
2、安装LibreSSL
wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.0.tar.gz --no-check-certificate ./configure --prefix=/usr/local/libressl make && make install
3、加载libressl库文件
echo '/usr/local/libressl/lib' >/etc/ld.so.conf.d/libressl-2.8.0.conf ldconfig -v
4、编辑python源码的Module/Setup文件,需要将默认注释掉的关于ssl的5行取消
vim /root/Python-3.8.18/Modules/Setup
206 #_socket socketmodule.c _socket socketmodule.c 208 209 # Socket module helper for SSL support; you must comment out the other 210 # socket line above, and possibly edit the SSL variable: 211 #SSL=/usr/local/ssl 212 #_ssl _ssl.c \ 213 # -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ 214 # -L$(SSL)/lib -lssl -lcrypto SSL=/usr/local/libressl _ssl _ssl.c \ -DUSE_SSL -I$(SSL)/include -I$(SSL)/include/openssl \ -L$(SSL)/lib -lssl -lcrypto
5、编译安装
./configure --prefix=/etc/python3.8 --enable-shared --with-openssl=/usr/local/libressl make && make install # /etc/python3.8/bin/python3.8: error while loading shared libraries: libpython3.8.so.1.0: cannot open shared object file: No such file or directory cp /root/Python-3.8.18/libpython3.8.so.1.0 /usr/lib64/
7、创建软链接
ln -s /etc/python3.8/bin/python3 /usr/bin/python38
ln -s /etc/python3.8/bin/pip3 /usr/bin/pip
8、安装IPA_VIEW_v0.1_Beta
git clone https://github.com/kiraster/IPA_VIEW_v0.1_Beta.git
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt
pip install pysqlite3
七、pip安装
# python3 pip安装:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
wget https://bootstrap.pypa.io/get-pip.py
python3 get-pip.py
# python2 pip安装:
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
wget https://bootstrap.pypa.io/pip/2.7/get-pip.py
python get-pip.py
八、ModuleNotFoundError: No module named ‘_sqlite3‘解决方法
# 查找python3.6动态库路径
python3 -c 'import _sqlite3 as m;print(m.__file__)'
# 查找python3.8动态库路径
python3.8 -c 'import random as m;print(m.__file__)'
# 复制sqlite3动态库文件到python3.8动态库目录下
cp /usr/lib64/python3.6/lib-dynload/_sqlite3.cpython-36m-x86_64-linux-gnu.so /etc/python3.8/lib/python3.8/lib-dynload/_sqlite3.cpython-38-x86_64-linux-gnu.so python3.8 -c 'import _sqlite3 as m;print(m.__file__)'
参考链接:
https://blog.csdn.net/jsut_rick/article/details/85765215 # 更改pip源
https://www.osgeo.cn/python-tutorial/index.html # python笔记文档
https://www.cnblogs.com/testlearn/p/14152198.html # CentOS系统安装python3和pip
https://blog.csdn.net/jaket5219999/article/details/53512071 # ModuleNotFoundError: No module named '_sqlite3'
https://github.com/kiraster/IPA_VIEW_v0.1_Beta # IP地址管理系统
https://www.python.org/downloads # pythont各版本下载
https://www.cnblogs.com/traditional/p/17398542.html # asyncio异步库