GNU/Linux >> Linux Esercitazione >  >> Linux

Come installare più versioni di Python (2.7 e 3.5) senza interrompere gli strumenti di sistema e creare un ambiente isolato utilizzando Virtualenv?

Oggi ti dirò come installare le versioni Python 2.7 e 3.5 su CentOS 6.4. E lo faremo senza interrompere l'installazione di Python esistente (la versione predefinita del sistema installato è 2.6.6 su CentOS 6.4) e altri strumenti di sistema come yum . Bene, il motivo principale alla base di questo tutorial è:ho recentemente installato Python 3 e ho rotto tutto:python, pip, yum ecc... Ecco l'istantanea di quelli: yum si è rotto dopo l'installazione/l'aggiornamento di Python:

# yum
 There was a problem importing one of the Python modules
 required to run yum. The error leading to this problem was:
 No module named rpm
 Please install a package which provides this module, or
 verify that the module is installed correctly.

Python non è riuscito a importare yum dopo aver installato/aggiornato Python:

# python
 Python 2.6 (r26:66714, Dec 16 2015, 11:33:08)
 [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
 Type "help", "copyright", "credits" or "license" for more information.
 >>> import yum
 Traceback (most recent call last):
 File "", line 1, in
 ImportError: No module named yum
 >>>

e pip anche rotto:

# pip
 Traceback (most recent call last):
 File "/usr/bin/pip", line 5, in
 from pkg_resources import load_entry_point
 ImportError: No module named pkg_resources

Quindi, la lezione appresa è:Mai pasticciare con Python!! (Una volta che Python è rotto, è molto difficile da riparare). Significa che se vuoi installare più versioni di Python su una singola macchina, fallo nel modo giusto!

Nota:installa sempre la nuova versione di Python in una posizione non standard (come /usr/local/)

Prerequisites: You need root access or sudo privilege.

Prepara il sistema per configurare Python installando "Strumenti di sviluppo" e le librerie necessarie.

Installa strumenti di sviluppo:

#yum groupinstall "Development tools"
 :::::::::::::::::::::::::
 :::::::::::::::::::::::::
 rpm-libs.x86_64 0:4.8.0-47.el6
 rpm-python.x86_64 0:4.8.0-47.el6
 xz-libs.x86_64 0:4.999.9-0.5.beta.20091007git.el6
 Complete!

Potresti aver bisogno anche di queste librerie:

Queste librerie non sono necessarie per installare Python, ma potresti averne bisogno in una fase successiva.

#yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
 :::::::::::::::::::::::::::
 :::::::::::::::::::::::::::
 ncurses-libs.x86_64 0:5.7-4.20090207.el6
 openssl.x86_64 0:1.0.1e-42.el6_7.2
 sqlite.x86_64 0:3.6.20-1.el6_7.2
 Complete!

Compila e installa Python 2.7 su CentOS 6.4

Scarica Python 2.7:

# wget http://python.org/ftp/python/2.7.6/Python-2.7.6.tar.xz
# tar xf Python-2.7.6.tar.xz

Nota: L'ultima versione di tar è in grado di estrarre .xz file. Nel caso, se non riuscissi a estrarre usando tar , allora ecco una guida per aiutarti.

# cd Python-2.7.6
#./configure --prefix=/usr/local --enable-unicode=ucs4 --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
 :::::::::::::::::::::::::::::::
 :::::::::::::::::::::::::::::::
 configure: creating ./config.status
 config.status: creating Makefile.pre
 config.status: creating Modules/Setup.config
 config.status: creating Misc/python.pc
 config.status: creating Modules/ld_so_aix
 config.status: creating pyconfig.h
 creating Modules/Setup
 creating Modules/Setup.local
 creating Makefile

Nota: Installerò Python in /usr/local . Significa che l'eseguibile verrà installato in /usr/local/bin e librerie in /usr/local/lib . Cerca le LDFLAGS anche.

# make && make altinstall
 ::::::::::::::::::::::::::::::
 running install_scripts
 copying build/scripts-2.7/idle -> /usr/local/bin
 copying build/scripts-2.7/smtpd.py -> /usr/local/bin
 copying build/scripts-2.7/pydoc -> /usr/local/bin
 copying build/scripts-2.7/2to3 -> /usr/local/bin
 changing mode of /usr/local/bin/idle to 755
 changing mode of /usr/local/bin/smtpd.py to 755
 changing mode of /usr/local/bin/pydoc to 755
 changing mode of /usr/local/bin/2to3 to 755
 running install_egg_info
 Writing /usr/local/lib/python2.7/lib-dynload/Python-2.7.6-py2.7.egg-info
 rm /usr/local/lib/python2.7/lib-dynload/_sysconfigdata.py*

Nota: Cerca make altinstall – non dovresti mai usare "make install" poiché installerà entrambe le versioni sullo stesso file system e rovinerà Python.

Python 2.7 è installato in:

# ls -ld /usr/local/lib/python2.7/

Compila e installa Python 3.5 su CentOS

# wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tar.xz
# tar xz Python-3.5.1.tar.xz
# cd Python-3.5.1
# ./configure --prefix=/usr/local --enable-shared LDFLAGS="-Wl,-rpath /usr/local/lib"
 :::::::::::::::::::::::::::::::::::::::::::
 :::::::::::::::::::::::::::::::::::::::::::
 configure: creating ./config.status
 config.status: creating Makefile.pre
 config.status: creating Modules/Setup.config
 config.status: creating Misc/python.pc
 config.status: creating Misc/python-config.sh
 config.status: creating Modules/ld_so_aix
 config.status: creating pyconfig.h
 creating Modules/Setup
 creating Modules/Setup.local
 creating Makefile
# make && make altinstall
 ::::::::::::::::::::::::
 ::::::::::::::::::::::::
 Ignoring indexes: https://pypi.python.org/simple
 Collecting setuptools
 Collecting pip
 Installing collected packages: setuptools, pip
 Successfully installed pip-7.1.2 setuptools-18.2
Python 3.5 installed:
 # ls -ld /usr/local/lib/python3.5/

Installa Setuptools e Python Pip:

Installiamo ora setuptools e pip per entrambe le versioni di Python (2.7 e 3.5) abbiamo installato sopra:

# wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
(or)
# curl https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py | /usr/local/bin/python2.7
You're using an outdated location for the get-pip.py script, please use the one available from https://bootstrap.pypa.io/get-pip.py

Aggiornamento: Il comando precedente avrà esito negativo con errore non trovato. Utilizzare invece il comando seguente per installare pip2.7.

#curl https://bootstrap.pypa.io/get-pip.py | /usr/local/bin/python2.7

Installa strumenti di installazione per Python 2.7:

# python2.7 ez_setup.py

Installa strumenti di installazione per Python 3.5:

# python3.5 ez_setup.py
:::::::::::::::::::::::::
Installed /usr/local/lib/python3.5/site-packages/setuptools-19.4-py3.5.egg
Processing dependencies for setuptools==19.4
Finished processing dependencies for setuptools==19.4

Installazione di pip per Python 2.7:

# easy_install-2.7 pip
::::::::::::::::::::::
Installing pip script to /usr/local/bin
Installing pip2.7 script to /usr/local/bin
Installing pip2 script to /usr/local/bin
Installed /usr/local/lib/python2.7/site-packages/pip-8.0.0-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip

Installazione di pip per Python 3.5:

# easy_install-3.5 pip
Searching for pip
Best match: pip 7.1.2
Adding pip 7.1.2 to easy-install.pth file
Installing pip3.4 script to /usr/local/bin
Installing pip3 script to /usr/local/bin
Installing pip script to /usr/local/bin
Using /usr/local/lib/python3.5/site-packages
Processing dependencies for pip
Finished processing dependencies for pip

Quindi abbiamo due versioni di Python, pip e setuptools. Ora isoleremo quegli ambienti Python (2.7 e 3.5).

Come configurare ambienti Python isolati

Per farlo, abbiamo bisogno di un pacchetto chiamato virtualenv.

Installa virtualenv per Python 2.7:

#pip2.7 install virtualenv
:::::::::::::::::::::::::::
Installing collected packages: virtualenv
Successfully installed virtualenv-14.0.0

Una volta installato, cerca virtualenv comandi come mostrato di seguito:

# virtualenv<tab>
virtualenv virtualenv-3.5

Creiamo ora un ambiente isolato usando virtualenv per Python 2.7 e chiamerò quell'ambiente virtuale come py27env (puoi impostare un nome diverso).

# virtualenv py27env
New python executable in /root/py27env/bin/python2.7
Also creating executable in /root/py27env/bin/python
Installing setuptools, pip, wheel...done.

L'ambiente isolato (chiamato sandbox) verrà creato nella directory corrente in cui hai eseguito il comando precedente. Cerca la cartella denominata py27env (potrebbe essere un nome diverso nel tuo caso).

# ls -ld py27env/
drwxr-xr-x. 5 root root 4096 Jan 21 15:25 py27env/

Devi attivare la sandbox py27env :

# source py27env/bin/activate
(py27env)

Ora, controlla la versione di Python come mostrato di seguito:

# python --version
Python 2.7.6

L'output sopra mostra che sei nella sandbox di Python 2.7.6. Per tornare alla versione Python installata dal sistema, devi solo disattivarla come di seguito:

(py27env)# deactivate

Controlla la versione ora:

# python --version
Python 2.6.6 //You are now back to default Python environment.

Crea un ambiente sandbox per Python 3.5

Abbiamo usato virtualenv per creare una sandbox per Python 2.5, ma per Python 3.5 utilizzeremo il comando integrato chiamato pyvenv-3.5.

# pyvenv-3.5 py35environment
(py35environment)

Troverai una directory denominata "py35environment" nella directory corrente. Ora attiviamo l'ambiente Python 3.5 come mostrato di seguito:

# source py35environment/bin/activate
(py35environment)
(py35environment) # python --version
Python 3.5.1

Disattivalo come di seguito:

(py35environment) # deactivate
# python --version
Python 2.6.6

Questo è tutto! Ora hai due diversi ambienti Python e l'hai fatto senza rovinare nulla. Spero che questo tutorial ti abbia aiutato.


Linux
  1. Raspberry Pi Firewall:come installarlo e gestirlo utilizzando UFW

  2. Crea un ambiente virtuale per diverse versioni di Python usando Conda

  3. Come installare e cambiare versioni di Python su Ubuntu 20.04

  4. Come utilizzare più versioni di Node.js utilizzando NVM

  5. Come creare e interrogare un file system BTRFS

VMware:come creare una macchina virtuale e installare il sistema operativo guest utilizzando vSphere Client

Come installare e utilizzare YouTube-DL su sistema Linux

Come installare e configurare AnyDesk su sistema Linux

Come installare e configurare Django su sistema Linux

Come installare e configurare PrestaShop su sistema Linux

Come installare e configurare Elasticsearch su sistema Linux