1. 程式人生 > >Python學習——python開發環境配置

Python學習——python開發環境配置

Python 2和Python 3之間存在著較大的差異,並且,由於各種原因導致了Python 2和Python 3的長期共存。在實際工作過程中,我們可能會同時用到Python 2和Python 3,因此,也需要經常在Python 2和Python 3之間進行來回切換。這就需要對python的版本進行管理,除此之外還需要對不同的軟體包進行管理。大部分情況下,對於開源的庫我們使用最新版本即可。但是,有時候可能需要對相同的Python版本,在不同的專案中使用不同版本的軟體包。

在這裡,我們要使用兩個工具:pyenv和virtualenv。前者用於管理不同的Python版本,後者用於管理不同的工作環境。有了這兩個工具,Python相關的版本問題將不再是問題。

1 pyenv

pyenv是一個Python版本管理工具,它能夠進行全域性的Python版本切換,也可以為單個專案提供對應的Python版本。使用pyenv以後,可以在伺服器上安裝多個不同的Python版本,也可以安裝不同的Python實現。不同Python版本之間的切換也非常簡單。pyenv官方地址https://github.com/pyenv/pyenv-installer

  • 安裝pyenv

    #1 安裝pyenv,在命令列下鍵入:
    $ curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer

    | bash

    #預設安裝到當前使用者的工作目錄下的.pyenv,我們可以檢視一下
    $ cd ~
    $ ls -la

    #如果安裝過git,也可以使用以下安裝方式安裝
    $ git clone https://github.com/pyenv/pyenv.git ~/.pyenv

    #2 將安裝路徑寫入~/.bashrc
    將以下三條語句寫入 ~/.bashrc
    export PATH="/home/zhu/.pyenv/bin: P A T

    H " e v a l " PATH" eval " (pyenv init -)"
    eval “$(pyenv virtualenv-init -)”

    $ source ~/.bashrc #配置立刻生效

    $ echo $PATH
    #如果路徑第一個結尾是shims則表示成功
    /home/python/.pyenv/plugins/pyenv-virtualenv/shims:/home/python/.pyenv/shims:/home/python/.pyenv/bin:/home/python/bin:/home/python/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

    #也可以將上面三條命令寫入到~/.barsh_profile,然後重啟一下shell

    #3 更新一下
    $ pyenv update

  • 使用pyenv
    #1.檢視pyenv當前支援哪些Python版本
    [email protected]:~$ pyenv install --list
    Available versions:
    2.1.3
    2.2.3
    2.3.7

    #2.列出pyenv中所有可用的python版本
    [email protected]:~$ pyenv versions
      system
      3.5.4
    * 3.6.4 (set by /home/python/.pyenv/version)  # *表示當前使用的3.6.4版本
    
    #3.選擇指定的python版本
    [email protected]:~$ pyenv global 3.5.4  #設定指定的版本
    [email protected]:~$ python  
    Python 3.5.4 (default, Mar 29 2018, 11:02:03)  #已經切換到了3.5.4
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> 
    切換Python版本以後,與版本相關的依賴也會一起切換。因此,我們不用擔心不同的版本在系統中是否會相互干擾。
    
    #4. 刪除指定python版本
    [email protected]:~$ pyenv uninstall 3.5.4
    pyenv: remove /home/python/.pyenv/versions/3.5.4? y
    [email protected]:~$ pyenv versions
      system
    * 3.6.4 (set by /home/python/.pyenv/version)
    
  • 安裝python
    #1.在安裝python之前,我們必須要安裝python所需要的依賴包,這個必須要安裝,安裝會失敗的:
    $ sudo apt-get install libc6-dev gcc
    $ sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm

    #2. 安裝python
    $ pyenv install 3.6.4 -v  #-v 以日誌模式顯示安裝過程
    #因為pyenv會自動到github上下載,速度超慢,所以一般會選擇使用curl或者wget下載到~/.pyenv/cache下,然後再用pyenv安裝,下面是可選的安裝模式
    $ cd ~/.pyenv
    $ sudo mkdir cache
    $ wget -c http://mirrors.sohu.com/python/3.6.4/Python-3.6.4.tar.xz -P  ~/.pyenv/cache/
    $ pyenv install 3.6.4 -v
    
    #3.更新pyenv資料庫
     $ pyenv rehash
    
    #4.列出所安裝的python版本
      $ pyenv versions
    
    #5.切換python版本
    $ pyenv  global 3.6.4
    
    #6.驗證版本
     $ python
    
  • 注意:

    • 使用pyenv管理python,必須是用pyenv安裝的python才行,系統以前有的,需要重新用pyenv安裝
    • 使用pip安裝第三方模組時會安裝到~/.pyenv/versions/xxx下,不會和系統模組發生衝突;
    • 使用pip安裝模組後,可能需要執行pyenv rehash更新資料庫。

2 virtualenv

virtualenv本身是一個獨立的專案,用以隔離不同專案的工作環境。例如,專案A和專案B都是使用Python 2.7.13,但是,專案A需要使用Flask 0.8版本,專案B需要使用Flask 0.9版本。我們只要組合pyenv和virtualenv這兩個工具,就能夠構造Python和第三方庫的任意版本組合,擁有了很好的靈活性,也避免了專案之間的相互干擾。

virtualenv本身是一個獨立的工具,使用者可以不使用pyenv單獨使用virtualenv。但是,如果你使用了pyenv,就需要安裝pyenv-virtualenv外掛而不是virtualenv軟體來使用virtualenv的功能。

專案主頁:https://github.com/yyuu/pyenv-virtualenv

  • 安裝virtualenv(可選)
    如果是python3以上,安裝完pyth就已經安裝了virtualenv,就不用安裝了
    #安裝
    $ pip install virtualenv

    #或者,如果提示版本不匹配,可以使用--upgrade引數
    $ sudo pip install --upgrade virtualenv
    
  • 使用virtualenv建立專案的虛擬環境

一個專案建立一個virtualenv的虛擬環境,在這個環境中,可以用pip安裝專案所需的庫,不會影響其他專案。切記一個專案一個虛擬環境,否則可能會發生莫名的錯誤。

#1.首先建立專案目錄
$ sudo mkdir -p myproject/blog
cd myproject/blog

#2.建立專案的虛擬環境
#用法:pyenv virtualenv python版本號 虛擬環境名
$ pyenv virtualenv 3.6.4 env36   #注意版本號必須是已經安裝的,否則會報錯

#3.切換到虛擬環境
[email protected]:/myproject/blog$ pyenv activate env36

pyenv-virtualenv: prompt changing will be removed from future release. configure `export PYENV_VIRTUALENV_DISABLE_PROMPT=1' to simulate the behavior.

(env36) [email protected]:/myproject/blog$  # (env36)表示該專案處於虛擬環境中

#驗證
(env36) [email protected]:/myproject/blog$ python
Python 3.6.4 (default, Mar 29 2018, 10:33:37) 
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.

#4. 切出虛擬環境
(env36) [email protected]:/myproject/blog$ pyenv deactivate env36
  • 使用pip下載庫

使用pip下載,會從國外的網站下載,速度超慢,所以要切換pip到國內的映象源,一般會用psm切換pip的源

  • 1.安裝一個軟體psm
    (bbs36)[email protected]:/myproject/blog$ pip install psm
    [sudo] python 的密碼:
    正在讀取軟體包列表… 完成
    正在分析軟體包的依賴關係樹
    正在讀取狀態資訊… 完成
    E: 無法定位軟體包 psm

  • 2.psm的使用
    以下操作需要在虛擬環境外進行,選擇好映象源後在進入虛擬環境
    #1.檢視列出pip的映象源
    (bbs36)[email protected]:/myproject/blog$ psm ls

    pypi 	 https://pypi.python.org/simple/
    douban 	 http://pypi.douban.com/simple/
    aliyun 	 http://mirrors.aliyun.com/pypi/simple/
    
    #檢視當前的映象源
    (bbs36)[email protected]:/myproject/blog$ psm show
    
    Current source is douban
    
    #2.選擇指定的映象源
    
    (bbs36)[email protected]:/myproject/blog$ psm use douban
    
    Source is changed to douban.
    
    #3 使用pip下載庫
    (bbs36) [email protected]:/myproject/blog$ pip install pymysql
    

pycharm和虛擬開發環境結合

1.建立一個新的工程,開啟project interpreter --> existing interpreter ,點選右邊的…按鈕

  1. 開啟virtual enviroment 選擇已經存在的虛擬開發環境. 在你的家目錄下–>.pyenv->versions --> 你的虛擬開發環境名稱–>bin 選python

對已經存在的工程來說,file->settingd-> project xxx -->project interpreter 選擇已經存在的虛擬開發環境