Linux下Python多版本環境安裝


Python多版本環境安裝

1 需求描述

  在測試環境提供一台機器給部分開發同事使用,每個用戶單獨一個賬戶,都是普通用戶。在開發過程中,不同的開發人員需要使用不同版本的Python,Centos7操作系統默認的Python2 版本為2.7.5, Python3的為Python3.4 ,一般無法滿足用戶的需求。故在每個用戶在自己的/home目錄下使用源碼安裝自己所需要的Python版本。

2 Python 多版本安裝

使用源碼安裝之前,使用yum安裝一些操作系統依賴包。

# yum install -y nc screen lrzsz expect cmake make gcc gcc-c++ perl bison bc thread libaio libaio-devel zlib zlib-devel nc python python-devel cmake ncurses-devel scurses sysstat perl-ExtUtils-CBuilder perl-CPAN perl-Log-Dispatch perl-Config-Tiny perl-Parallel-ForkManager perl-Config IniFiles vim-enhanced ftp telnet wget tree iftop iotop fio bind-utils net-tools openssl openssl-devel libnl-3-devel libnl-3 libnl libnl-devel glib glibc-devel glib-devel pcre pcre-devel openssl openssl-devel dos2unix dstat iftop iotop gcc gcc-c++ make cmake automake autoconf libxml2 libxml2-devel zlib zlib-devel ncurses ncurses-devel numactl-devel numactl ftp dstat wget make iftop iotop dstat bzip2-devel

2.1 安裝Python2.7.13

2.1.1 下載軟件包

$ wget https://www.python.org/ftp/python/2.7.13/Python-2.7.13.tgz

2.1.2 解壓安裝Python2.7.13

$ tar zxvf Python-2.7.13.tgz
$ cd Python-2.7.13
$ ./configure --prefix=/home/mgx/python2.7.13 --with-ssl --enable-optimizations
$ make –j4
$ make install

2.1.3 配置個人環境變量

$ vim ~/.bashrc
# 加上這一行
PATH=/home/mgx/python2.7.13/bin:$PATH

讓環境變量生效

$ source ~/.bashrc

查看Python版本

$ python –V

升級pip

$ pip install --upgrade pip

2.2 安裝Python 3.6.8

2.2.1 下載軟件包

$ wget https://www.python.org/ftp/python/3.6.8/Python-3.6.8.tgz

2.2.2 解壓安裝

$ tar zxvf Python-3.6.8.tgz
$ cd Python-3.6.8
$ ./configure --prefix=/home/mgx/python3.6.8 --with-ssl --enable-optimizations
$ make -j4
$ make install

2.2.3 配置個人環境變量

$ vim ~/.bashrc
# 加上這一行
PATH=/home/mgx/python3.6.8/bin:$PATH

讓環境變量生效

$ source ~/.bashrc

查看Python版本

$ python3 –V

升級pip3

$ pip3 install --upgrade pip

3 Python虛擬環境

雖然可以通過上面的方式安裝不同版本的Python,但是相對來說還是不夠簡便。virtualenv提供了一套“隔離”的Python運行環境,更方便於提供多版本Python應用開發環境。

3.1 安裝

$ pip3 install virtualenv

用上述pip即可安裝好Python虛擬環境。

3.2 使用

每個項目,都需要獨立創建一個或者多個虛擬環境,假如現在需要創建一個項目(目錄文件叫project):

$ mkdir project
$ cd project

 准備virtualenv, -p 指定python版本

$ virtualenv -p python3 venv

 激活virtualenv

$ source venv/bin/activate
(venv) [mgx@gitlab66 project]$
(venv) [mgx@gitlab66 project]$

可以看到,進入了虛擬環境之后,有個(venv)的前綴。

(venv) [mgx@gitlab66 project]$ pip list
Package    Version
---------- -------
pip        20.0.2
setuptools 46.1.3
wheel      0.34.2

可以看到,這個是一個全新的環境。專門針對於project這個項目。使用deactivate命令退出虛擬環境。

(venv) [mgx@gitlab66 project]$ deactivate
[mgx@gitlab66 project]$

在這里面安裝的Python模塊與操作系統的隔離,當開發完畢后,可以使用

(venv) [mgx@gitlab66 project]$ pip install pymysql
Collecting pymysql
  Downloading PyMySQL-0.9.3-py2.py3-none-any.whl (47 kB)
     |████████████████████████████████| 47 kB 334 kB/s
Installing collected packages: pymysql
Successfully installed pymysql-0.9.3
(venv) [mgx@gitlab66 project]$  pip freeze > requirements.txt
PyMySQL==0.9.3

導出相應的Python模塊,在生產環境中安裝。

不過現在生產環境中多用Docker,因此虛擬環境在生產環境也不怎么使用。

 

4 使用pip安裝Python模塊

4.1 pip安裝

pip是一個用來安裝和管理Python包的工具,操作系統一般都默認安裝了pip,如果沒有安裝,可以使用以下方式進行安裝。

Centos

yum -y install epel-release
yum install python-pip
pip install --upgrade pip

默認pip會從pypi.douban.com下載軟件包,有時候網絡不好的情況下,下載速度巨慢,可以通過在下載命令中執行下載地址或者修改配置文件,從穩定的源站進行下載。

例如,從豆瓣的鏡像源下載軟件包

pip install -i https://pypi.douban.com/simple/ pymysql
Looking in indexes: https://pypi.douban.com/simple/
Collecting pymysql
  Downloading https://pypi.doubanio.com/packages/ed/39/15045ae46f2a123019aa968dfcba0396c161c20f855f11dea6796bcaae95/PyMySQL-0.9.3-py2.py3-none-any.whl (47 kB)
     |████████████████████████████████| 47 kB 2.3 MB/s
Installing collected packages: pymysql
Successfully installed pymysql-0.9.3

也可以直接配置修改配置文件~/.pip/pip.conf

$ vim  ~/.pip/pip.conf
[global]
timeout =6000
index-url =https://pypi.douban.com/simple/
[install]
use-mirrors =true
mirrors =https://pypi.douban.com/simple/
trusted-host =pypi.douban.com

4.2 pip常用命令

4.2.1 常用命令說明

4.2.2 示例

  • 查找軟件包
pip search pymysql
  • 安裝軟件包
pip install pymysql
  • 安裝特定版本軟件包
pip install pymysql==0.9.3
  • 刪除軟件包
pip uninstall pymysql
  • 查看已安裝的軟件包列表
pip list
  • 導出系統中已經安裝的軟件包到requirements文件
pip freeze > requirement.txt
  • 從requirements文件安裝軟件包
pip install -r requirement.txt

4.2.3 下載軟件包到本地安裝

有時候生產上的服務器無法訪問外網,這個時候,可以在測試環境中下載好軟件包,然后傳到服務器上,通過本地安裝的方式進行軟件包安裝。

$ pip download flask
Collecting flask
  Downloading Flask-1.1.2-py2.py3-none-any.whl (94 kB)
     |████████████████████████████████| 94 kB 296 kB/s
  Saved ./Flask-1.1.2-py2.py3-none-any.whl
Collecting Werkzeug>=0.15
  Downloading Werkzeug-1.0.1-py2.py3-none-any.whl (298 kB)
     |████████████████████████████████| 298 kB 390 kB/s
  Saved ./Werkzeug-1.0.1-py2.py3-none-any.whl
Collecting Jinja2>=2.10.1
  Downloading Jinja2-2.11.2-py2.py3-none-any.whl (125 kB)
     |████████████████████████████████| 125 kB 437 kB/s
  Saved ./Jinja2-2.11.2-py2.py3-none-any.whl
Collecting itsdangerous>=0.24
  Downloading itsdangerous-1.1.0-py2.py3-none-any.whl (16 kB)
  Saved ./itsdangerous-1.1.0-py2.py3-none-any.whl
Collecting click>=5.1
  Downloading click-7.1.1-py2.py3-none-any.whl (82 kB)
     |████████████████████████████████| 82 kB 427 kB/s
  Saved ./click-7.1.1-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23
  Downloading MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl (27 kB)
  Saved ./MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
Successfully downloaded flask Werkzeug Jinja2 itsdangerous click MarkupSafe
$ pip install --no-index -f file:///home/mgx flask
Looking in links: file:///home/mgx
Processing ./Flask-1.1.2-py2.py3-none-any.whl
Processing ./click-7.1.1-py2.py3-none-any.whl
Processing ./Werkzeug-1.0.1-py2.py3-none-any.whl
Processing ./Jinja2-2.11.2-py2.py3-none-any.whl
Processing ./itsdangerous-1.1.0-py2.py3-none-any.whl
Processing ./MarkupSafe-1.1.1-cp36-cp36m-manylinux1_x86_64.whl
Installing collected packages: click, Werkzeug, MarkupSafe, Jinja2, itsdangerous, flask
Successfully installed Jinja2-2.11.2 MarkupSafe-1.1.1 Werkzeug-1.0.1 click-7.1.1 flask-1.1.2 itsdangerous-1.1.0

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM