УНИТе

Портал > Документация > Компилиране, инсталиране и използване на Python 3.8 под CentOS 8

Компилиране, инсталиране и използване на Python 3.8 под CentOS 8

Съдържание:

  1. Предварителна информация
  2. Инсталиране на пакетите
  3. Изтегляне на програмния код, компилиране и инсталиране
  4. Използване на така компилирания и инсталиран Python 3.8
  5. Използване на pip3 за добавяне на модули към колекцията модули на Python 3.8
  6. Използване на virtualenv с Python 3.8

 

1. Предварителна информация

Документът по-долу описва как да компилирате, инсталирате и използвате Python 3.8 под CentOS 8. Отбележете, че подразбиращата се версия на Python 3.x, която се поддържа в дистрибуцията, е 3.6.8 (през AppStream). Показаната по-долу рецепта за компилация, инсталиране и използване на Python 3.8 ще ви е нужна, ако искате по някаква причина да използвате Python 3.8. Във всички други случаи, когато ще използвате Python за чуслени пресмятания, се препоръчва да използвате Intel Python3 (това е Python във версия 3.6, компилирана и разпространявана от Intel), чиято инсталационна процедура може да намерите в документа "Инсталиране на Intel Python 3 под CentOS 7 и 8".

 

2. Инсталиране на пакетите

Нужно е да инсталирате компилаторите, пакетите за конфигурация на компилацията и определен набор други пакети, които позволяват да се компилират модули зависещи от външен програмен код. По-долу е показано как да бъде извършено това чрез dnf:

$ sudo su dnf config-manager --set-enabled PowerTools 
$ sudo dnf install gcc-c++ gcc automake autoconf bzip2-devel xz-devel ncurses-devel zlib-devel openssl-devel gdbm-devel readline-devel tk-devel sqlite-devel libffi-devel libtirpc-devel libnsl2-devel

Ако след завършване на компилацията сте сигурни, че няма да ви се налага да използвате отново хранилището "PowerTools", може да забраните на dnf достъпа до него, като изпълните:

$ sudo su dnf config-manager --set-disabled PowerTools

 

3. Изтегляне на програмния код, компилиране и инсталиране

След като сте инсталирали нужните пакети, както е показано по-горе, пристъпете към процеса на компилация (отбележете двукратното изпълнение на make по-долу), като резултата от него ще бъде запазен в директория /usr/unite/python-3.8.0-gcc, която може да смените с друга, която най-добре отговаря на вашия случай:

$ mkdir ~/build
$ cd ~/build
$ wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz
$ tar xvf Python-3.8.0.tar.xz
$ cd Python-3.8.0
$ ./configure --prefix=/usr/unite/python-3.8.0-gcc-c8 --enable-ipv6 --enable-loadable-sqlite-extensions --enable-optimizations --enable-profiling --enable-shared --with-system-ffi
$ make -j6
$ make install

 

4. Използване на така компилирания и инсталиран Python 3.8

За да може да използвате така компилирания и инсталиран Python 3.8, трябва в текущата bash сесия да изпълните (може да се наложи да замените /usr/unite/python-3.8.0-gcc-c8 с директорията, която сте избрали за вашия случай, ако тя е различна):

$ PYTHONHOME=/usr/unite/python-3.8.0-gcc-c8 PATH=/usr/unite/python-3.8.0-gcc-c8/bin:$PATH LD_LIBRARY_PATH=/usr/unite/python-3.8.0-gcc-c8/lib:$LD_LIBRARY_PATH python3

В случай, че искате да използвате тази инсталация на Python 3.8 за ваша подразбираща се, може да укажете съответните пътища във вашия ~/.bashrc файл, добавяйки редовете:

export PYTHONHOME=/usr/unite/python-3.8.0-gcc-c8
export PATH=/usr/unite/python-3.8.0-gcc-c8/bin:$PATH
export LD_LIBRARY_PATH=/usr/unite/python-3.8.0-gcc-c8/lib:$LD_LIBRARY_PATH

При стартиране на нова bash сесия, тези настройки ще влязат автоматично в сила.

 

5. Използване на pip3 за добавяне на модули към колекцията модули на Python 3.8

За да изпълните инструкциите по инсталация на модули с pip3 в Python 3.8, трябва да имате указани пътищата до инсталацията на Python 3.8, съгласно инструкциите дадени по-горе!

  • инсталиране като непривилигерован потребител:

    При този тип инсталация, добавените Python модули се инсталират в ${HOME}/.local/lib/python3.8 и са достъпни само за потребителя, който ги е инсталирал. Например, ако трябва да се добави модула numpy това става така:

    $ pip3 install --user numpy

    След успешното завършване на инсталацията, влезте в командния интерпретатор на Python:

    $ python3

    и там опитайте да заредите инсталирания преди това модул:

    Python 3.8.0 (default, Oct 2 2019, 23:09:58) 
    [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import numpy
    >>>

    и ако не получите съобщение за грешка, то инсталацията на модула е била успешна.

  • инсталиране като привилигерован потребител (sudo):

    ВНИМАНИЕ! Така добавените модули стават използваеми за всички потребители на състемата, ако те използват Python 3.8. Което означава, че ако инсталирате нестабилен модул, това може да засегне работата на всички потребители на тази версия на Python. Извикайте pip3 чрез sudo:

    $ sudo pip3 install scipy

    За да проверите дали инсталацията е протекла успешно, влезте в командния интерпретатор на Python:

    $ python3

    и там опитайте да заредите инсталирания преди това модул:

    Python 3.8.0 (default, Oct 2 2019, 23:09:58) 
    [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import scipy
    >>>

    и ако не получите съобщение за грешка, то инсталацията на модула е била успешна.

Възможно е по този начин да инсталирате следните модули, подходящи за научни проекти:

  • numpy
  • scipy
  • h5py
  • tables
  • MDAnalysis
  • pandas
  • tensorflow
  • tensorflow_gpu

Ако при инсталирането на модул се налага процес на компилация, то трябва да укажете чрез include флаг съответната директория като стойност на променливата CFLAGS, в която директория да може да бъде намерен файла Python.h. Например:

$ sudo CFLAGS=-I/usr/unite/python-3.8.0-gcc-c8/include/python3.8 pip3 install python-ldap

В този случай може да се наложи да замените /usr/unite/python-3.8.0-gcc-c8 с директорията, която сте избрали за вашия случай, ако тя е различна от показаната в примера.

 

6. Използване на virtualenv с Python 3.8

Ако желате да изолирате по-добре инсталацията на Python 3.8, създадена по описанията дадени по-горе, то трябва да използвате virtualenv инструмента за създаване на виртуална среда за изпълнение на процесите на Python 3.8. За целта, първо трябва да инсталирате модула virtualenv чрез pip3:

$ PYTHONHOME=/usr/unite/python-3.8.0-gcc PATH=/usr/unite/python-3.8.0-gcc-c8/bin:$PATH LD_LIBRARY_PATH=/usr/unite/python-3.8.0-gcc-c8/lib:$LD_LIBRARY_PATH pip3 install --user virtualenv

За да създадете виртуална среда, в която може да използвате модулите, инсталирани или добавени в последствие, използвайте следната процедура:

  • създайте директория, в която ще се намират файловете на виртуалната среда (интерпретатора на Python 3.8, конфигурационни файлове и модули):

    $ mkdir ~/virtualenv_1
  • създайте виртуалната среда за Python 3.8:

    $ cd ~/virtualenv_1
    $ PYTHONHOME=/usr/unite/python-3.8.0-gcc PATH=/usr/unite/python-3.8.0-gcc-c8/bin:$PATH LD_LIBRARY_PATH=/usr/unite/python-3.8.0-gcc-c8/lib:$LD_LIBRARY_PATH virtualenv --system-site-packages -p python3 .

    При успешно инсталиране, ще получите следните съобщения от типа:

    Running virtualenv with interpreter /usr/unite/python-3.8.0-gcc-c8/bin/python3
    Already using interpreter /usr/unite/python-3.8.0-gcc-c8/bin/python3
    PYTHONHOME is set.  You *must* activate the virtualenv before using it
    Using base prefix '/usr/unite/python-3.8.0-gcc'
    New python executable in /home/user/virtualenv_1/bin/python3
    Also creating executable in /home/user/virtualenv_1/bin/python
    Installing setuptools, pip, wheel...
    done.

За да използвате създадената виртуална среда, влезте в директорията, изградена по-горе:

$ cd ~/virtualenv_1

и я активирайте:

$ export LD_LIBRARY_PATH=/usr/unite/python-3.8.0-gcc-c8/lib:$LD_LIBRARY_PATH
$ source bin/activate

Ще забележите, че в началото на реда на командния интерпретатор, ще се появи преставка, която указва на това, че използвате виртуална среда:

(virtualenv-1) [user@node001 virtualenv-1]$

В тази виртуална среда може да използвате версията на Python 3.8. Проверете това така:

(virtualenv-1) [user@node001 virtualenv-1]$ python -V

Като резултат, ще получите версията, например:

Python 3.8.0

За да дезактивирате виртуалната среда (когато сте в нея), изпълнете:

(virtualenv-1) [user@node001 virtualenv-1]$ deactivate

 


Последна актуализация: 12 октомври 2019

2019 УНИТе, Веселин Колев