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.7You'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.