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异步库

posted @ 2018-09-19 11:53  風£飛  阅读(279)  评论(0编辑  收藏  举报