1. 程式人生 > >騰訊雲伺服器ubuntu16.04系統下安裝Python版本管理工具pyenv

騰訊雲伺服器ubuntu16.04系統下安裝Python版本管理工具pyenv

一、 系統環境

  騰訊雲提供的系統是ubuntu 16.04 LTS,系統預設的Python版本是2.7.12,我想要安裝3.6和其他的版本。
  比較方便的是騰訊雲已經預設安裝好了git和curl命令,可以很方便的下載安裝軟體

二、 pyenv的安裝

  • 第一步 下載並安裝pyenv
$ git clone git://github.com/yyuu/pyenv.git ~/.pyenv
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ exec $SHELL -l    

這個時候pyenv就已經安裝好了,我們輸入pyenv可以檢視具體用法和簡介

[email protected]:~$ pyenv
pyenv 1.2.7-13-ge389c8d
Usage: pyenv <command> [<args>]

Some useful pyenv commands are:
   commands    List all available pyenv commands
   local       Set or show the local application-specific Python version
   global      Set or show the global Python version
   shell       Set or show the shell-specific Python version
   install     Install a Python version using python-build
   uninstall   Uninstall a specific Python version
   rehash      Rehash pyenv shims (run this after installing executables)
   version     Show the current Python version and its origin
   versions    List all Python versions available to pyenv
   which       Display the full path to an executable
   whence      List all Python versions that contain the given executable

See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme

我們還可以通過下面這個命令來檢視可以安裝的python版本:

$ pyenv install --list

在安裝Python之前,必須要安裝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

好了,我們可以開始安裝Python了:

$ pyenv install 3.6.3 -v

需要注意的是,這種下載方法是從Python官網下載安裝包,速度可能會非常慢,所以有個快速方法是先從搜狐提供的映象網站下載指定的Python版本到~/.pyenv/cache目錄下:

wget http://mirrors.sohu.com/python/3.6.3/Python-3.6.3.tar.xz  -P ~/.pyenv/cache

然後再用pyenv install命令安裝,就可以很快完成了

$ pyenv install 3.6.3

安裝完成之後,需要使用如下命令對資料庫進行更新

$ pyenv rehash

檢視當前已經安裝的python版本:

[email protected]:~$ pyenv versions
* system (set by /home/ubuntu/.pyenv/version)
  3.6.3

其中星號代表是當前系統正在使用的python版本是系統自帶的。

三、 安裝虛擬環境並切換Python版本

按照上面步驟我們已經安裝好了可用的Python版本,下面我們再下載一個pyenv外掛-virtualenv

git clone https://github.com/pyenv/pyenv-virtualenv.git $(pyenv root)/plugins/pyenv-virtualenv

但此時還不能使用。我們需要將以下命令新增到~/.bashrc檔案結尾,這樣就可以在命令列使用virtualenv了

$ echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc
$ source ~/.bashrc

這樣就可以使用了。

然後我們建立Python虛擬環境,我們先在當前目錄下建立一個資料夾:

[email protected]:~$ mkdir MyPython
[email protected]:~$ cd MyPython/
[email protected]:~/MyPython$ ll
total 8
drwxrwxr-x 2 ubuntu ubuntu 4096 Oct 30 19:06 ./
drwxr-xr-x 8 ubuntu ubuntu 4096 Oct 30 19:06 ../
[email protected]:~/MyPython$

好了,我們進入到MyPython資料夾下了,利用pyenv virtualenv命令建立虛擬環境

[email protected]:~/mypython$ pyenv virtualenv 3.6.3 env363

Using base prefix '/home/ubuntu/.pyenv/versions/3.6.3'
New python executable in /home/ubuntu/.pyenv/versions/3.6.3/envs/env363/bin/python3.6
Also creating executable in /home/ubuntu/.pyenv/versions/3.6.3/envs/env363/bin/python
Please make sure you remove any previous custom paths from your /home/ubuntu/.pydistutils.cfg file.
Installing setuptools, pip, wheel...done.
Requirement already satisfied: setuptools in /home/ubuntu/.pyenv/versions/3.6.3/envs/env363/lib/python3.6/site-packages
Requirement already satisfied: pip in /home/ubuntu/.pyenv/versions/3.6.3/envs/env363/lib/python3.6/site-packages

注意,命令中的3.6.3必須是一個安裝前面步驟已經安裝好的python版本, 否則會出錯。env363則是自己起的名字,用來標註這個虛擬環境。
然後我們通過pyenv versions命令來檢視當前的虛擬環境

[email protected]:~/mypython$ pyenv versions
  system
* 3.6.3 (set by /home/ubuntu/mypython/.python-version)
  3.6.3/envs/env363
  env363

最後,我們利用pyenv的local方法來切換到建立好的虛擬環境

[email protected]:~/mypython$ pyenv local env363
(env363) [email protected]:~/mypython$ 

看到命令列前面的那個括號就說明我們成功了。然後檢視當前環境預設Python版本:

(env363) [email protected]:~/mypython$ python
Python 3.6.3 (default, Oct 30 2018, 16:30:54)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

pyenv local命令是為了保證只有當前資料夾以及往下遞迴的資料夾裡的環境是Python3.6.3,其他資料夾以及系統Python環境不會改變

(env363) [email protected]:~/mypython$ cd
[email protected]:~$

可以回到主目錄下括號就消失了,說明當前沒有在用虛擬環境

[email protected]:~$ python
Python 2.7.12 (default, Dec  4 2017, 14:50:18)
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到系統預設的python版本沒變。

下面我們就可以可以在編輯器上連線遠端伺服器來進行Python開發了,skr~