GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Menginstal Beberapa Versi Python (2.7 dan 3.5) Tanpa merusak alat Sistem dan Membuat lingkungan Terisolasi menggunakan Virtualenv?

Hari ini, saya akan memberi tahu Anda cara menginstal versi Python 2.7 dan 3.5 di CentOS 6.4. Dan kita akan melakukan ini tanpa merusak instalasi Python yang ada (versi default sistem yang diinstal adalah 2.6.6 pada CentOS 6.4) dan alat sistem lainnya seperti yum . Nah, alasan utama di balik tutorial ini adalah – Saya baru saja menginstal Python 3 dan merusak semuanya – python, pip, yum dll…Inilah cuplikannya: yum rusak setelah menginstal/memutakhirkan 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 gagal mengimpor yum setelah menginstal/memutakhirkan 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
 >>>

dan pip rusak juga:

# 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

Jadi, pelajaran yang didapat adalah – Jangan pernah main-main dengan Python!! (Setelah Python rusak, sangat sulit untuk memperbaikinya). Artinya, jika Anda ingin menginstal beberapa versi Python pada satu mesin, lakukan dengan cara yang benar!

Catatan:Selalu instal versi baru Python di lokasi yang tidak standar (seperti /usr/local/)

Prerequisites: You need root access or sudo privilege.

Siapkan sistem untuk menyiapkan Python dengan menginstal “Alat Pengembangan” dan pustaka yang diperlukan.

Instal Alat Pengembangan:

#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!

Anda mungkin juga memerlukan perpustakaan ini:

Pustaka ini tidak diperlukan untuk menginstal Python, tetapi Anda mungkin memerlukannya di tahap selanjutnya.

#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!

Kompilasi dan Instal Python 2.7 di CentOS 6.4

Unduh 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

Catatan: Versi terbaru tar mampu mengekstraksi .xz mengajukan. Jika Anda tidak dapat mengekstrak menggunakan tar , maka inilah panduan untuk membantu Anda.

# 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

Catatan: Saya akan menginstal Python di /usr/local . Artinya, executable akan dipasang di /usr/local/bin dan perpustakaan di /usr/local/lib . Cari LDFLAGS juga.

# 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*

Catatan: Cari buat altinstall – Anda tidak boleh menggunakan 'make install' karena akan menginstal kedua versi pada sistem file yang sama dan akan mengacaukan python.

Python 2.7 diinstal di bawah:

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

Kompilasi dan Instal Python 3.5 di 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/

Instal Setuptools dan Python Pip:

Sekarang mari kita instal setuptools dan pip untuk kedua versi Python (2.7 dan 3.5) yang kami instal di atas:

# 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

Pembaruan: Perintah di atas akan gagal dengan tidak ditemukan kesalahan. Sebagai gantinya gunakan perintah di bawah ini untuk menginstal pip2.7.

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

Instal alat penyiapan untuk Python 2.7:

# python2.7 ez_setup.py

Instal setuptools untuk 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

Menginstal pip untuk 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

Menginstal pip untuk 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

Jadi kami memiliki dua versi Python, pip dan setuptools. Sekarang kita akan mengisolasi lingkungan Python tersebut (2.7 dan 3.5).

Cara menyiapkan lingkungan Python yang terisolasi

Untuk melakukan itu, kita membutuhkan sebuah paket bernama virtualenv.

Instal virtualenv untuk Python 2.7:

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

Setelah diinstal, cari virtualenv perintah seperti yang ditunjukkan di bawah ini:

# virtualenv<tab>
virtualenv virtualenv-3.5

Mari kita sekarang membuat lingkungan yang terisolasi menggunakan virtualenv untuk Python 2.7 dan saya akan menamai lingkungan virtual itu sebagai py27env (Anda dapat menetapkan nama yang berbeda).

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

Lingkungan terisolasi (disebut sebagai kotak pasir) akan dibuat di direktori saat ini tempat Anda menjalankan perintah di atas. Cari folder bernama py27env (mungkin nama yang berbeda dalam kasus Anda).

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

Anda perlu mengaktifkan kotak pasir py27env :

# source py27env/bin/activate
(py27env)

Sekarang, periksa versi python seperti yang ditunjukkan di bawah ini:

# python --version
Python 2.7.6

Output di atas menunjukkan bahwa Anda menggunakan sandbox Python 2.7.6. Untuk beralih kembali ke versi Python yang diinstal sistem, Anda hanya perlu menonaktifkannya seperti di bawah ini:

(py27env)# deactivate

Periksa versi sekarang:

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

Buat lingkungan kotak pasir untuk Python 3.5

Kami menggunakan virtualenv untuk membuat kotak pasir untuk Python 2.5, tetapi untuk Python 3.5 kami akan menggunakan perintah bawaan yang disebut pyvenv-3.5.

# pyvenv-3.5 py35environment
(py35environment)

Anda akan menemukan direktori bernama 'py35environment' di direktori saat ini. Sekarang mari kita aktifkan lingkungan Python 3.5 seperti yang ditunjukkan di bawah ini:

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

Nonaktifkan seperti di bawah ini:

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

Itu dia! Anda sekarang memiliki dua lingkungan Python yang berbeda dan Anda melakukannya tanpa mengacaukan apa pun. Semoga tutorial ini membantu Anda.


Linux
  1. Buat lingkungan virtual untuk versi Python yang berbeda menggunakan Conda

  2. Cara Menginstal dan Beralih Versi Python di Ubuntu 20.04

  3. Cara Membuat dan Query Sistem File BTRFS

  1. Raspberry Pi Firewall:Cara Menginstal dan Mengelolanya dengan Menggunakan UFW

  2. Cara Menggunakan Beberapa Versi Node.js menggunakan NVM

  3. Bagaimana saya bisa mengkompilasi, menginstal, dan menjalankan alat di dalam kernel/alat?

  1. Cara Mengumpulkan Metrik Sistem dan Aplikasi menggunakan Metricbeat

  2. Cara menginstal dan mengatur beberapa mesin catur di XBoard

  3. Cara membuat Bucket S3 menggunakan Python Boto3 di AWS