Python virtualenv虚拟环境

只谈情不闲聊 提交于 2021-01-30 14:49:01

在开发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,结束了!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!