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 ?
https://www.linuxidc.com/Linux/2018-05/152610.htm#默認安裝到當前用戶的工作目錄下的.pyenv,我們可以查看一下 $ cd ~ $ ls -la ? #如果安裝過git,也可以使用以下安裝方式安裝$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv ? #2 將安裝路徑寫入~/.bashrc將以下三條語句寫入 ~/.bashrc ? export PATH="/home/zhu/.pyenv/bin:$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 ? ? ? #3 更新一下 $ pyenv rehash
-
使用pyenv
#1.查看pyenv當前支持哪些Python版本 python@ubuntu:~$ pyenv install --list Available versions:2.1.32.2.32.3.7...#2.列出pyenv中所有可用的python版本 python@ubuntu:~$ pyenv versionssystem3.5.4 * 3.6.4 (set by /home/python/.pyenv/version) # *表示當前使用的3.6.4版本 ? #3.選擇指定的python版本 python@ubuntu:~$ pyenv global 3.5.4 #設置指定的版本 python@ubuntu:~$ 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版本 python@ubuntu:~$ pyenv uninstall 3.5.4 pyenv: remove /home/python/.pyenv/versions/3.5.4? y python@ubuntu:~$ pyenv versionssystem * 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 ? #全局切換 $ pyenv local 2.7.9 #和特定目錄綁定 ? #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以上,安裝完python就已經安裝了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.切換到虛擬環境
python@ubuntu:/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) python@ubuntu:/myproject/blog$ # (env36)表示該項目處于虛擬環境中
?
#驗證
(env36) python@ubuntu:/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) python@ubuntu:/myproject/blog$ pyenv deactivate env36
-
使用pip下載庫
使用pip下載,會從國外的網站下載,速度超慢,所以要切換pip到國內的鏡像源,一般會用psm切換pip的源
-
1.安裝一個軟件psm
(bbs36)python@ubuntu:/myproject/blog$ pip install psm [sudo] python 的密碼: 正在讀取軟件包列表... 完成 正在分析軟件包的依賴關系樹 ? ? ? 正在讀取狀態信息... 完成 ? ? ? E: 無法定位軟件包 psm
?
-
2.psm的使用 以下操作需要在虛擬環境外進行,選擇好鏡像源后在進入虛擬環境
#1.查看列出pip的鏡像源 (bbs36)python@ubuntu:/myproject/blog$ psm ls ? pypi https://pypi.python.org/simple/ douban http://pypi.douban.com/simple/ aliyun http://mirrors.aliyun.com/pypi/simple/ ? #查看當前的鏡像源 (bbs36)python@ubuntu:/myproject/blog$ psm show ? Current source is douban ? #2.選擇指定的鏡像源 ? (bbs36)python@ubuntu:/myproject/blog$ psm use douban ? Source is changed to douban. ? #3 使用pip下載庫 (bbs36) python@ubuntu:/myproject/blog$ pip install pymysql
?
virtualenvwrapper:virtualenv的擴展包
?
安裝
安裝很簡單,使用easy_install進行安裝
sudo easy_install virtualenvwrapper
此時還不能使用virtualenvwrapper,默認virtualenvwrapper安裝在/usr/local/bin下面,實際上你需要運行virtualenvwrapper.sh文件才行,這個文件里面的注釋部分有安裝步驟,我們照著操作把環境設置好。
1.創建目錄用來存放虛擬環境
mkdir $HOME/.virtualenvs
2.在~/.bashrc中添加
export WORKON_HOME=$HOME/.virtualenvs
3.在~/.bashrc中添加
source /usr/local/bin/virtualenvwrapper.sh
4.執行
source ~/.bashrc
此時virtualenvwrapper就可以使用了
使用
簡單的介紹下使用:
列出虛擬環境列表
workon
也可以使用
lsvirtualenv
新建虛擬環境
mkvirtualenv [虛擬環境名稱]
啟動/切換虛擬環境
workon [虛擬環境名稱]
刪除虛擬環境
rmvirtualenv [虛擬環境名稱]
離開虛擬環境
deactivate
?
總結:
1.?? virtualenv?? -p /usr/bin/python3? 虛擬環境
?激活:source 虛擬環境/bin/activate
?退出虛擬環境: deactivate
?
2.? virtualenvwrapper 虛擬環境 的升級版
?
配置:.bashrc文件? (當前用戶家目錄cd ~ ,)
????????????? .bashrc_profile (阿里服務器配置文件名)
……
保存 source .bashrc
命令:
mkvirtualenv -p /usr/bin/python3 shopping:創建虛擬環境 shopping
workon shopping: 工作在 online環境 或 從其它環境切換到 shopping 環境
deactivate: 退出終端環境
rmvirtualenv 虛擬環境的名字
?
3. 可以使用此方式:
sudo apt-get install python3-venv
python3 -m venv? 虛擬環境
source? 虛擬環境/bin/activate
退出: deactivate
?
?
- 注意:
? - 使用pyenv管理python,必須是用pyenv安裝的python才行,系統以前有的,需要重新用pyenv安裝
? - 使用pip安裝第三方模塊時會安裝到~/.pyenv/versions/xxx下,不會和系統模塊發生沖突;
? - 使用pip安裝模塊后,可能需要執行pyenv rehash更新數據庫。
?
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
?
?
source .bashrc
?
pyenv update?? 更新
?
pyenv install –list
?
強調:原生python3.6?? python2.7? python3.7? 操作系統
?
安裝對應版本的python
?
pyenv? install? 版本號
?
pyenv? versions? 查看可以管理的版本有哪些
python 3.7.0
python 3.6.8
python 2.7.5
python 3.7.1
?
使用版本號:
pyenv? global?? 3.6.8
?
使用3.6.8設置虛擬環境:
pyenv? virtualenv 3.6.8? 虛擬環境
?
進入虛擬環境:
pyenv??? activate? 虛擬環境名字
略微有一點亂.
退出:
pyenv deactivate? 虛擬環境名字