在使用 Python 開發的過程當中,工程一多,不免會碰到不一樣的工程依賴不一樣版本的庫的問題;亦或者是在開發過程當中不想讓物理環境裏充斥各類各樣的庫,引起將來的依賴災難。此時,咱們須要對於不一樣的工程使用不一樣的虛擬環境來保持開發環境以及宿主環境的清潔。這裏,就要使用 virtualenv與virtualenvwrapper來解決這個問題,一個能夠幫助咱們管理不一樣 Python 環境的絕好工具。virtualenv 能夠在系統中創建多個不一樣而且相互不干擾的虛擬環境。python
#指定清華源下載pip的包(-i 後面爲清華源)linux
pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple virtualenvweb
#也能夠直接使用命令django
pip3 install virtualenvcentos
#(若是提示pip版本太舊可使用)升級pip工具bash
pip3 install --upgrade pipapp
(1)建立目錄tcp
mkdir Myproject工具
cd Myprojectcentos7
(2) 建立獨立運行環境-命名
virtualenv --python=/usr/bin/python3 demo1
#獲得獨立第三方包的環境,而且指定解釋器是python3
(3)進入虛擬環境
source activate
#此時進入虛擬環境(venv)Myproject
4.安裝第三方包
(venv)Myproject: pip3 install django==2.2
#此時pip的包都會安裝到venv環境下,venv是針對Myproject建立的
5.退出venv環境
deactivate命令
6.
virtualenv是如何建立「獨立」的Python運行環境的呢?原理很簡單,就是把系統Python複製一份到virtualenv的環境,用命令source activate進入一個virtualenv環境時,virtualenv會修改相關環境變量,讓命令python和pip均指向當前的virtualenv環境。
7.安裝最簡單的django項目
# mysite2爲項目名
django-admin startproject mysite2
python3 manage.py startapp app01 #app01爲app名稱
修改下settings.py
ALLOWED_HOSTS = ["*"]
# centos7須要開啓web端口
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
python manage.py runserver 0.0.0.0:8000
virtualenv 的一個最大的缺點就是:
每次開啓虛擬環境以前要去虛擬環境所在目錄下的 bin 目錄下 source 一下 activate,這就須要咱們記住每一個虛擬環境所在的目錄。
一種可行的解決方案是,將全部的虛擬環境目錄全都集中起,而且針對不一樣的目錄作不一樣的事。
使用virtualenvwrapper管理你的虛擬環境(virtualenv),其實他就是統一管理虛擬環境的目錄,而且省去了source的步驟。
# 安裝
pip3 install virtualenvwrapper
# 配置全局變量
[root@hsz Myproject]# find / -name virtualenvwrapper.sh
find: ‘/proc/70508’: No such file or directory
/usr/local/python3/bin/virtualenvwrapper.sh
[root@hsz Myproject]# vi ~/.bashrc
# 添加內容
# 虛擬環境的保存目錄
WORKON_HOME=~/Envs
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
source /usr/local/python3/bin/virtualenvwrapper.sh
# 使之生效
source ~/.bashrc
也能夠:
vi ~/.bash_profile
寫入如下幾行代碼(export能夠先去掉) export WORKON_HOME=~/Envs # 設置virtualenv的統一管理目錄, 之後自動下載的虛擬環境,所有都放在這 export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages' # 添加virtualenvwrapper的參數,生成乾淨隔絕的環境 export VIRTUALENVWRAPPER_PYTHON=/opt/python347/bin/python3 # 指定python解釋器的本體(注意此路徑隨不一樣的linux環境改變而改變) source /opt/python34/bin/virtualenvwrapper.sh # 執行virtualenvwrapper安裝腳本
# 建立虛擬環境demo3
# 若是使用: mkvirtualenv demo3 -p python3 (使用相應的python版本)
[root@hsz Myproject]# mkvirtualenv demo3
Using base prefix '/usr/local/python3'
New python executable in /root/Envs/demo3/bin/python3.6
Also creating executable in /root/Envs/demo3/bin/python
Installing setuptools, pip, wheel...
done.
# 查看有哪些虛擬環境
(demo3) [root@hsz Myproject]# workon
demo3
# 進入demo3虛擬環境
(demo3) [root@hsz Myproject]# workon demo3
(demo3) [root@hsz Myproject]# ls
demo1 demo2 mysite
# 安裝django == 後面表示版本
(demo3) [root@hsz]# pip3 install django==2.2
# 建立django項目
(demo3) [root@hsz Myproject]# django-admin startproject mysite3
(demo3) [root@hsz Myproject]# ls
demo1 demo2 mysite mysite3
# mysite3 下的 mysite3 修改settings.py的配置,在[] 加」*」
ALLOWED_HOSTS = ["*"]
# 運行django 成功
python manage.py runserver 0.0.0.0:8000
# 注意centos7 須要開啓web端口,步驟以下
firewall-cmd --permanent --add-port=8000/tcp
firewall-cmd --reload
# 或者直接關閉firewall
## 關閉命令
systemctl stop firewalld
## 查看firewall狀態
systemctl status firewalld