在开发Python应用程序的时候,系统安装的Python3只有一个版本:3.4。所有第三方的包都会被pip
安装到Python3的site-packages
目录下。
如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的Python 3。如果应用A需要jinja 2.7,而应用B需要jinja 2.6怎么办?
这种情况下,每个应用可能需要各自拥有一套“独立”的Python运行环境。virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。
首先,我们用pip
安装virtualenv:
[root@bogon ~]# pip3 install virtualenv
Collecting virtualenv
Downloading https://files.pythonhosted.org/packages/8b/12/8d4f45b8962b03ac9efefe5ed5053f6b29334d83e438b4fe379d21c0cb8e/virtualenv-16.7.5-py2.py3-none-any.whl (3.3MB)
|████████████████████████████████| 3.3MB 615kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.7.
安装完成后可以查看一下
[root@bogon bin]# ls
2to3 django-admin.py idle3.6 pip3.6 python3 python3.6m-config uwsgi wsdump.py
2to3-3.6 docker-compose jsonschema __pycache__ python3.6 python3-config uwsgi.log
chardetect easy_install-3.6 pip pydoc3 python3.6-config pyvenv uwsgi.pid
django-admin idle3 pip3 pydoc3.6 python3.6m pyvenv-3.6 virtualenv
安装完成后使用virtualenv --version查看版本
[root@bogon bin]# virtualenv --version
bash: virtualenv: 未找到命令...
[root@bogon bin]#
淡定,因为我用的不是自带的Python2,用的3,yum这些需要用的是Python2,所以我的默认还是Python2
接下来添加软连接
[root@bogon bin]# ln -s /usr/local/python3/bin/virtualenv /usr/bin/virtualevn
[root@bogon bin]# virtualevn --version
16.7.5
[root@bogon bin]#
搞定
然后,假定我们要开发一个新的项目,需要一套独立的Python运行环境,可以这么做:
第一步,创建目录:
[root@bogon shaobo]# mkdir ven
第二步,创建一个独立的Python运行环境,命名为venv
:
唉,折腾了好久一直不行提示那个configparser模块找不到,没有办法
只能重新安装Python了
先把之前的卸载干净,删除方法,我是将所有的文件全部删除了
1.先安装一些我遇到的依赖问题(如果有依赖问题按提示安装):
yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
2.官网下载源码包
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz
3.解压文件
xz -d Python-3.7.1.tar.xz
tar -xvf Python-3.7.1.tar
4.进入文件目录
cd Python-3.7.1
5.开始安装编译
./configure --prefix=/usr/local/python3.7
make
make install
6.让centos7 使用python3.7
ln -s /usr/local/python3.7/bin/python3 /usr/bin/python3
ln -s /usr/local/python3.7/bin/pip3 /usr/bin/pip3
到此安装完成。
重复上边安装virtualenv
pip3 install virtualenv
这个我也不知道是啥,参考别人的
pip3 install gunicorn
[root@bogon testvenv]# virtualenv --no-site-packages -p /usr/bin/python3 venv
Running virtualenv with interpreter /usr/bin/python3
Already using interpreter /usr/bin/python3
Using base prefix '/usr/bin/python3.7'
New python executable in /opt/shaobo/testvenv/venv/bin/python3
Also creating executable in /opt/shaobo/testvenv/venv/bin/python
Installing setuptools, pip, wheel...
done.
[root@bogon testvenv]# ls
搞定了激动哟
第三步:激活虚拟环境
先进入bin目录
[root@bogon venv]# cd bin/
[root@bogon bin]# ls
activate activate.fish activate_this.py easy_install pip pip3.7 python3 python-config
activate.csh activate.ps1 activate.xsh easy_install-3.7 pip3 python python3.7 wheel
然后激活虚拟环境
[root@bogon bin]# source ./activate
(venv) [root@bogon bin]#
我们尝试安装一个request
(venv) [root@bogon bin]# pip3 install request
Collecting request
Downloading https://files.pythonhosted.org/packages/f1/27/7cbde262d854aedf217061a97020d66a63163c5c04e0ec02ff98c5d8f44e/request-2019.4.13.tar.gz
Collecting get (from request)
然后我们进入site_packages中查看安装的模块
(venv) [root@bogon python3.7]# cd site-packages/
(venv) [root@bogon site-packages]# ls
easy_install.py pkg_resources __pycache__ setuptools
get post query_string setuptools-41.2.0.dist-info
get-2019.4.13.dist-info post-2019.4.13.dist-info query_string-2019.4.13.dist-info wheel
pip public request wheel-0.33.6.dist-info
pip-19.2.3.dist-info public-2019.4.13.dist-info request-2019.4.13.dist-info
(venv) [root@bogon site-packages]#
退出虚拟环境
(venv) [root@bogon bin]# deactivate
[root@bogon bin]#
ok,结束了!