GNU/Linux >> Znalost Linux >  >> Linux

Jak nainstalovat více verzí Pythonu (2.7 a 3.5) bez porušení systémových nástrojů a vytvoření izolovaného prostředí pomocí Virtualenv?

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

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.


Linux
  1. Jak nainstalovat a přepnout verze Pythonu na Ubuntu 20.04

  2. Jak používat více verzí Node.js pomocí NVM

  3. Jak vytvořit a dotazovat souborový systém BTRFS

  1. Raspberry Pi Firewall:Jak jej nainstalovat a spravovat pomocí UFW

  2. Vytvořte virtuální prostředí pro různé verze Pythonu pomocí Conda

  3. Jak mohu zkompilovat, nainstalovat a spustit nástroje uvnitř jádra/nástrojů?

  1. Jak shromažďovat systémové a aplikační metriky pomocí Metricbeat

  2. Jak nainstalovat a nastavit více šachových enginů na XBoard

  3. Jak vytvořit S3 Bucket pomocí Pythonu Boto3 na AWS