第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Django 入門教程

課程導(dǎo)學(xué)
Django 慕課教程使用指南
Django開發(fā)實(shí)戰(zhàn)
35 開發(fā)實(shí)戰(zhàn)
首頁(yè) 慕課教程 Django 入門教程 Django 入門教程 03 虛擬開發(fā)環(huán)境搭建

虛擬開發(fā)環(huán)境搭建

上節(jié)課我們認(rèn)識(shí)了什么是 Web 框架,知道 Web 框架可以給我們的網(wǎng)站開發(fā)帶來很多便利,節(jié)省很多時(shí)間。那么這節(jié)課我們繼續(xù)來介紹一個(gè)在實(shí)際開發(fā)中非常實(shí)用的工具–虛擬開發(fā)環(huán)境。

虛擬環(huán)境是近年來開發(fā) Python Web 項(xiàng)目的必備前提,它就很好地解決了多個(gè) Python 項(xiàng)目之間第三方模塊版本沖突的問題,我們也會(huì)將其作為學(xué)習(xí) Django 開發(fā)的一個(gè)基礎(chǔ),后續(xù)的所有 Django 示例代碼都會(huì)在虛擬環(huán)境中實(shí)驗(yàn)。接下來我們會(huì)介紹什么是虛擬環(huán)境以及如何使用虛擬環(huán)境。

1. 虛擬環(huán)境介紹

1.1 什么是虛擬環(huán)境?

在我們第一次安裝好 Python 后,我們就有了一個(gè)全局的 Python 環(huán)境, 也稱為系統(tǒng)環(huán)境。使用虛擬環(huán)境工具在全局環(huán)境的基礎(chǔ)上可以創(chuàng)建多個(gè)相互獨(dú)立、互不影響的虛擬環(huán)境。這些虛擬環(huán)境本質(zhì)上來說就是相互獨(dú)立的文件夾,里面包含了 Python 解釋器和相關(guān)依賴的模塊。

1.2 為什么要使用虛擬環(huán)境?

在 Python 開發(fā),特別是 Python Web 項(xiàng)目開發(fā)中,我們會(huì)使用大量的第三方模塊。有時(shí)候開發(fā)中需要特定版本的模塊。如果本地只有一個(gè)項(xiàng)目,我們直接用 pip install 安裝對(duì)應(yīng)版本的模塊即可,但是如果本地有多個(gè)項(xiàng)目,每個(gè)項(xiàng)目中可能會(huì)有模塊沖突,或者 Python 版本的沖突,該如何解決這些問題呢?這個(gè)時(shí)候虛擬環(huán)境就可以派上用場(chǎng)了。

針對(duì)每個(gè) Python 項(xiàng)目,我們可以指定一個(gè)虛擬環(huán)境,在這個(gè)虛擬環(huán)境中,我們準(zhǔn)備好相應(yīng)版本的 Python 解釋器,使用 pip 安裝項(xiàng)目依賴的第三方模塊。這樣每個(gè)項(xiàng)目都有自己的環(huán)境和對(duì)應(yīng)安裝好的第三方模塊。每個(gè)項(xiàng)目的環(huán)境都互不干擾。當(dāng)我們需要開發(fā)或者啟動(dòng)某個(gè)項(xiàng)目時(shí),使用命令進(jìn)入對(duì)應(yīng)的虛擬環(huán)境即可。這樣可以非常有效的解決上述多個(gè)項(xiàng)目之間包沖突的問題。

使用 Pycharm 進(jìn)行 Python 項(xiàng)目開發(fā)時(shí),虛擬環(huán)境已經(jīng)成了標(biāo)配。Pycharm 在創(chuàng)建 Python 項(xiàng)目時(shí),會(huì)自動(dòng)創(chuàng)建好相應(yīng)的虛擬環(huán)境,并默認(rèn)使用虛擬環(huán)境的 Python 解釋器。當(dāng)然我們也可以自行選擇,但這說明了虛擬環(huán)境在 Python 開發(fā)中越來越重要。

2. Python 虛擬環(huán)境管理工具

2.1 virtualenv

從 Python 3.3 開始 virtualenv 的子集作為 venv 標(biāo)準(zhǔn)庫(kù)被集成到了 Python 中。它可以用來創(chuàng)建 Python 的虛擬環(huán)境,它的安裝和使用也非常簡(jiǎn)單:

$ pip install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple
$ pip3 install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple

該工具的使用命令如下:

  • virtualenv [虛擬環(huán)境的名稱]:在當(dāng)前目錄下創(chuàng)建虛擬環(huán)境,加上 -p 選項(xiàng)可以指定 python 解釋器路徑,不然會(huì)默認(rèn)使用全局環(huán)境的 python 解釋器;

  • 激活和退出虛擬環(huán)境:

    • cd [虛擬環(huán)境名稱]: 進(jìn)入虛擬環(huán)境目錄;

    • source bin/activate:激活虛擬環(huán)境;

    • deactivate: 退出虛擬環(huán)境。

在真正項(xiàng)目部署上線的時(shí)候,我們使用 pip freeze > requirements.txt 命令將項(xiàng)目所依賴的 python 模塊保存到 requirements.txt 文件中,然后在線上環(huán)境重新安裝并激活新的虛擬環(huán)境,最后使用 pip install -r requirements.txt 即可完成虛擬環(huán)境的遷移。

2.2 pyenv

純 pyenv 是可以看做一個(gè) Python 版本管理器,可以同時(shí)管理多個(gè) Python 版本共存。 簡(jiǎn)單地說,pyenv 可以根據(jù)需求使用戶在系統(tǒng)里安裝和管理多個(gè) Python 版本。它的基本功能如下:

  • 配置當(dāng)前用戶的 Python 的版本;

  • 配置當(dāng)前 shell 的 python 版本;

  • 配置某個(gè)項(xiàng)目(目錄及子目錄)的 Python 版本;

  • 配置多個(gè)虛擬環(huán)境。

注意:pyenv 的工作原理就是利用系統(tǒng)環(huán)境變量 PATH 的優(yōu)先級(jí),劫持 Python 的命令到 pyenv 上,根據(jù)用戶所在的環(huán)境或目錄,使用不同版本的 Python 。

2.2.1 pyenv 的安裝、更新和卸載

安裝: 在 Linux 系統(tǒng)上安裝 pyenv 的方式非常簡(jiǎn)單,由官方提供的安裝 bash 腳本,也可以直接下載源碼即可。具體操作如下:

# 安裝git
$ yum install git -y
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
# 安裝 pyenv-virtualenv
$ git clone https://github.com/pyenv/pyenv-virtualenv.git ~/.pyenv/plugins/pyenv-virtualenv
$ cat ~/.bashrc
...

# 在~/.bashrc最后加上如下3行
export PATH="~/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

# 使配置生效
$ source ~/.bashrc

# 查看pyenv的版本
$ pyenv version

更新: 因?yàn)槭鞘褂?git 安裝的 pyenv,所以更新只需要繼續(xù)用 git 拉最新的代碼即可。更新 pyenv 步驟如下:

cd ~/.pyenv 或者 cd $(pyenv root)
git pull

卸載: 由于 pyenv 把一切都放在~/.pyenv 下了,所以卸載很方便,兩個(gè)步驟就行了:

  • 刪除 ~/.bashrc 中添加的環(huán)境變量;

  • 刪除 ~/.pyenv 目錄及其下面所有文件。

    rm -rf ~/.pyenv` 或者 `rm -rf $(pyenv root)
    

Tips:pyenv 并不支持 Windows,因?yàn)樽髡叽蟠蟛幌肜速M(fèi)時(shí)間去兼容 Windows 平臺(tái)。

2.2.2 pyenv 的命令

pyenv 的常用命令如下:

  • pyenv commands : 查看 pyenv 工具支持的命令;

  • pyenv local:python 的局部設(shè)置,當(dāng)前目錄生效,加上 --unset 選項(xiàng)表示取消;

  • pyenv global:python 的全局設(shè)置,整個(gè)系統(tǒng)生效;

  • pyenv shell:指定當(dāng)前 shell 使用的 Python , 可以使用 --unset 取消指定 ;

  • pyenv --version: 查看 pyenv 的版本;

  • pyenv version:顯示當(dāng)前活動(dòng)的 Python 版本。

    # 系統(tǒng)環(huán)境
    [root@server ~]# pyenv version
    system (set by /root/.pyenv/version)
    # 激活創(chuàng)建的虛擬環(huán)境
    [root@server ~]# pyenv activate env-3.8.1
    pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
    # 再次查看
    (env-3.8.1) [root@server ~]# pyenv version
    env-3.8.1 (set by PYENV_VERSION environment variable)
    
  • pyenv versions:查看所有的虛擬環(huán)境;

  • pyenv install --list: 查看所有可以安裝的 Python 版本;

  • pyenv install:安裝對(duì)應(yīng)版本的 Python 作為虛擬環(huán)境的解釋器。這一步通常第一次需要聯(lián)網(wǎng)下載對(duì)應(yīng)的 Python 包,會(huì)比較慢;

  • pyenv uninstall:卸載某個(gè) Python 版本。

pyenv-virtualenv 工具的常用命令:

  • pyenv virtualenv python版本號(hào) name :創(chuàng)建一個(gè)虛擬環(huán)境,,命名為 name, 創(chuàng)建好后可通過 pyenv versions 來查看;

  • pyenv activate name :切換到 name 虛擬環(huán)境中 ;

  • pyenv deactivate :退出虛擬環(huán)境 ;

  • pyenv virtualenv-delete name :刪除名為 name 的虛擬環(huán)境;

2.3 pyenv 實(shí)戰(zhàn)

接下來我們使用 pyenv 工具在 CentOS 系統(tǒng)上實(shí)戰(zhàn)下虛擬環(huán)境的操作,這里安裝 pyenv 的步驟略掉。

檢查 pyenv 的版本,以及可以安裝的 Python 版本。可以看到目前 Python 的最新版本已經(jīng)到 3.9 了

[root@server ~]# pyenv --version
pyenv 1.2.15-9-gac246e1
[root@server ~]# pyenv install --list
Available versions:
  2.1.3
  ...
  2.7.17
  ...
  3.7.6
  3.8.0
  3.8-dev
  3.8.1
  3.9-dev
  ...

安裝 Python 3.8.1 版本解釋器,這樣后續(xù)可以基于 3.8.1 版本的 Python 創(chuàng)建虛擬環(huán)境:


[root@server ~]# pyenv install 3.8.1

Downloading Python-3.8.1.tar.xz...
-> https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz
...

使用 3.8.1 版本的 python 解釋器創(chuàng)建虛擬環(huán)境 env-3.8.1

[root@server ~]# pyenv virtualenv 3.8.1 env-3.8.1
Looking in links: /tmp/tmp7m4c6giw
Requirement already satisfied: setuptools in /root/.pyenv/versions/3.8.1/envs/env-3.8.1/lib/python3.8/site-packages (41.2.0)
Requirement already satisfied: pip in /root/.pyenv/versions/3.8.1/envs/env-3.8.1/lib/python3.8/site-packages (19.2.3)
[root@server ~]# pyenv versions
  system
* 3.8.1 (set by /root/.pyenv/version)
  3.8.1/envs/env-3.8.1
  env-3.8.1

進(jìn)入 env-3.8.1 的虛擬環(huán)境,在輸入 python 命令后可以看到 版本是 3.8.1。另外通過 pip 命令可以查看已經(jīng)安裝的模塊。

[root@server ~]# pyenv activate env-3.8.1
pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.
(env-3.8.1) [root@server ~]# python
Python 3.8.1 (default, Dec 24 2019, 17:04:00) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
(env-3.8.1) [root@server ~]# pip list
Package    Version
---------- -------
pip        19.2.3 
setuptools 41.2.0

在虛擬環(huán)境中安裝第三方模塊,比如操作 MySQL 數(shù)據(jù)的 pymysql:

(env-3.8.1) [root@server ~]# pip install pymsql
(env-3.8.1) [root@server ~]# ls ~/.pyenv/versions/env-3.8.1/lib64/python3.8/site-packages/pymysql
_auth.py    connections.py  cursors.py   optionfile.py  _socketio.py
charset.py  constants       err.py       protocol.py    times.py
_compat.py  converters.py   __init__.py  __pycache__    util.py

最后退出該虛擬環(huán)境,并且由于項(xiàng)目不再繼續(xù),將刪除該虛擬環(huán)境??梢钥吹皆趧h除該虛擬環(huán)境后,對(duì)應(yīng)的目錄也被刪除了

(env-3.8.1) [root@server ~]# pyenv deactivate
[root@server ~]# pyenv virtualenv-delete env-3.8.1
pyenv-virtualenv: remove /root/.pyenv/versions/3.8.1/envs/env-3.8.1? y
[root@server ~]# ls ~/.pyenv/versions/3.8.1/envs

我們實(shí)戰(zhàn)操作了 pyenv 工具管理虛擬環(huán)境,主要是加深了對(duì)虛擬環(huán)境的理解。其實(shí)一個(gè)虛擬環(huán)境對(duì)應(yīng)的就是一個(gè)目錄,在虛擬環(huán)境中安裝的所有模塊都會(huì)放到這個(gè)目錄下。這樣每個(gè)環(huán)境之間下載的模塊不會(huì)產(chǎn)生沖突,這樣能很好解決不同項(xiàng)目依賴包沖突的問題。

3. 小結(jié)

本小節(jié)我們介紹了 Python 開發(fā)中常用的虛擬環(huán)境相關(guān)知識(shí),同時(shí)介紹了 2 種用于創(chuàng)建和管理虛擬環(huán)境的工具 virtualenvpyenv。其中 pyenv 工具可以集合 pip 和 virtualenv 相關(guān)功能,更為有用。后續(xù)我們選擇使用 pyenv 來創(chuàng)建虛擬環(huán)境并進(jìn)行 Django 的開發(fā)實(shí)戰(zhàn)。

下節(jié)預(yù)告:

食用指南中我們說到了學(xué)習(xí)本課程需要具備一些 HTML/CSS/JS 基礎(chǔ),那么下節(jié)課《Web 相關(guān)知識(shí) - HTML/CSS/JS》中我們就來介紹一下本課程中需要用到的 HTML/CSS/JS 知識(shí)。