python開發環境配置
Python 2和Python 3之間存在着較大的差異,并且,由于各種原因導緻了Python 2和Python 3的長期共存。在實際工作過程中,我們可能會同時用到Python 2和Python 3,是以,也需要經常在Python 2和Python 3之間進行來回切換。這就需要對python的版本進行管理,除此之外還需要對不同的軟體包進行管理。大部分情況下,對于開源的庫我們使用最新版本即可。但是,有時候可能需要對相同的Python版本,在不同的項目中使用不同版本的軟體包。
在這裡,我們要使用兩個工具:pyenv和virtualenv。前者用于管理不同的Python版本,後者用于管理不同的工作環境。有了這兩個工具,Python相關的版本問題将不再是問題。
5.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/fdy/.pyenv/bin: P A T H " e v a l " PATH" eval " 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更新資料庫。
5.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 ,點選右邊的…按鈕
- 打開virtual enviroment 選擇已經存在的虛拟開發環境. 在你的家目錄下–>.pyenv->versions --> 你的虛拟開發環境名稱–>bin 選python
對已經存在的工程來說,file->settingd-> project xxx -->project interpreter 選擇已經存在的虛拟開發環境