在開發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,結束了!