Dnes vám řeknu, jak nainstalovat verze Pythonu 2.7 a 3.5 na CentOS 6.4. A uděláme to bez porušení stávající instalace Pythonu (výchozí verze nainstalovaného systému je 2.6.6 na CentOS 6.4) a dalších systémových nástrojů, jako je yum . No, hlavní důvod tohoto tutoriálu je – nedávno jsem si nainstaloval Python 3 a rozbil jsem všechno – python, pip, yum atd…Zde je přehled toho: yum se po instalaci/upgradu Pythonu rozbil:
# 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.
Pythonu se nepodařilo importovat yum po instalaci/upgradu Pythonu:
# 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 >>>
a pip zlomil také:
# 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
Poučení tedy zní – Nikdy se s Pythonem neposerte!! (Jakmile je Python rozbitý, je velmi těžké jej opravit). To znamená, že pokud někdy budete chtít nainstalovat více verzí Pythonu na jeden počítač, udělejte to správným způsobem!
Poznámka:Vždy instalujte novou verzi Pythonu do nestandardního umístění (jako je /usr/local/)
Prerequisites: You need root access or sudo privilege.
Připravte systém na nastavení Pythonu instalací „Development Tools“ a nezbytných knihoven.
Instalace vývojových nástrojů:
#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!
Možná budete potřebovat také tyto knihovny:
Tyto knihovny nejsou nutné k instalaci Pythonu, ale možná je budete potřebovat v pozdější fázi.
#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!
Zkompilujte a nainstalujte Python 2.7 na CentOS 6.4
Stáhnout 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
Poznámka: Nejnovější verze tar je schopno extrahovat .xz soubor. V případě, že byste nemohli extrahovat pomocí tar , pak je zde průvodce, který vám pomůže.
# 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
Poznámka: Nainstaluji Python do /usr/local . To znamená, že spustitelný soubor bude nainstalován do /usr/local/bin a knihovny v /usr/local/lib . Podívejte se na LDFLAGS také.
# 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*
Poznámka: Vyhledejte make altinstall – nikdy byste neměli používat „make install“, protože to nainstaluje obě verze na stejný souborový systém a naruší python.
Python 2.7 je nainstalován pod:
# ls -ld /usr/local/lib/python2.7/
Zkompilujte a nainstalujte Python 3.5 na 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/
Instalovat Setuptools a Python Pip:
Nyní nainstalujme setuptools a pip pro obě verze Pythonu (2.7 a 3.5), které jsme nainstalovali výše:
# 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
Aktualizace: Výše uvedený příkaz selže s chybou nenalezen. Místo toho použijte níže uvedený příkaz k instalaci pip2.7.
#curl https://bootstrap.pypa.io/get-pip.py | /usr/local/bin/python2.7
Nainstalujte setuptools pro Python 2.7:
# python2.7 ez_setup.py
Instalujte setuptools pro 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
Instalace pipu pro 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
Instalace pipu pro 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
Máme tedy dvě verze Pythonu, pip a setuptools. Nyní izolujeme tato prostředí Pythonu (2.7 a 3.5).
Jak nastavit izolovaná prostředí Pythonu
K tomu potřebujeme balíček s názvem virtualenv.
Nainstalujte virtualenv pro Python 2.7:
#pip2.7 install virtualenv ::::::::::::::::::::::::::: Installing collected packages: virtualenv Successfully installed virtualenv-14.0.0
Po instalaci vyhledejte virtualenv příkazy, jak je uvedeno níže:
# virtualenv<tab> virtualenv virtualenv-3.5
Pojďme nyní vytvořit izolované prostředí pomocí virtualenv pro Python 2.7 a toto virtuální prostředí pojmenuji jako py27env (můžete nastavit jiný název).
# virtualenv py27env New python executable in /root/py27env/bin/python2.7 Also creating executable in /root/py27env/bin/python Installing setuptools, pip, wheel...done.
Izolované prostředí (nazývané jako sandbox) se vytvoří v aktuálním adresáři, kde jste provedli výše uvedený příkaz. Podívejte se na složku s názvem py27env (ve vašem případě může jít o jiný název).
# ls -ld py27env/ drwxr-xr-x. 5 root root 4096 Jan 21 15:25 py27env/
Musíte aktivovat sandbox py27env :
# source py27env/bin/activate (py27env)
Nyní zkontrolujte verzi pythonu, jak je uvedeno níže:
# python --version Python 2.7.6
Výše uvedený výstup ukazuje, že se nacházíte v karanténě Pythonu 2.7.6. Chcete-li přepnout zpět na systémově nainstalovanou verzi Pythonu, stačí ji deaktivovat, jak je uvedeno níže:
(py27env)# deactivate
Nyní zkontrolujte verzi:
# python --version Python 2.6.6 //You are now back to default Python environment.
Vytvořte prostředí sandbox pro Python 3.5
Použili jsme virtualenv k vytvoření sandboxu pro Python 2.5, ale pro Python 3.5 použijeme vestavěný příkaz s názvem pyvenv-3.5.
# pyvenv-3.5 py35environment (py35environment)
V aktuálním adresáři najdete adresář s názvem ‚py35environment‘. Pojďme nyní aktivovat prostředí Python 3.5, jak je ukázáno níže:
# source py35environment/bin/activate (py35environment)
(py35environment) # python --version Python 3.5.1
Deaktivujte jej následovně:
(py35environment) # deactivate
# python --version Python 2.6.6
A je to! Nyní máte dvě různá prostředí Pythonu a udělali jste to, aniž byste něco pokazili. Doufám, že vám tento návod pomohl.