Installez Python3 + OCI CLI sur Linux série 7 et la version de Python prise en charge par OCI CLI sera 3.5+ après 2020/2/13

1.Tout d'abord

** J'ai mis à jour la CLI en pensant "Je n'ai pas mis à jour la CLI OCI récemment" **. Lorsque vous exécutez la CLI, un message surprenant s'affiche en rouge!

$ oci iam region list WARNING: OCI CLI now requires Python 3.5+. Please install or upgrade your version of Python to 3.5+ before February 13, 2020 to avoid interruption to CLI usage.

** Si vous réfléchissez calmement, la date limite de support pour Python 2 est jusqu'à fin mars 2020. ** **

** Oracle Linux 7 Python est la série 2.x. C'est pourquoi j'ai étudié les contre-mesures. ** **

$ python -V Python 2.7.5

1-1. TL;DR

1-2. Public cible

1-3. Documents de référence

** Manuel japonais **

** Manuel en anglais **

2. Pensez à créer un environnement CLI OCI

Python 3 est requis pour utiliser l'interface de ligne de commande OCI. Cependant, la construction de l'environnement de Python est diversifiée et c'est une situation difficile pour les utilisateurs. Revenez à la vue d'ensemble et réfléchissez à la politique d'installation.

2-1. Comment installer OCI CLI

De nombreuses instructions sur l'installation de l'interface de ligne de commande OCI sont présentées dans le manuel ci-dessus et dans l'article suivant de Qiita. Il existe des différences subtiles, mais elles sont à peu près les mêmes.

2-2. Problème de construction de l'environnement Python

Le problème est la construction de l'environnement Python. Il existe plusieurs façons d'utiliser Python 3 sur Oracle Linux 7 / CentOS 7 en premier lieu, et il existe également plusieurs façons de gérer les packages Python. Comme vous pouvez le voir dans le prochain article, la situation est extrêmement compliquée.

Cette fois, réfléchissons simplement et réduisons-nous dans les conditions suivantes.

Ensuite, je peux penser à la méthode suivante.

** Python 3.x n'est pas inclus dans le référentiel standard, donc si vous pensez que "Collections de logiciels" ou "EPEL", selon les sources d'actualités suivantes, la version 7.7 ou ultérieure (2019 / 8-) sera incluse dans le référentiel standard. ** **

Après vérification, il est inclus dans le référentiel standard (ol7_latest) comme suit. Dans le chapitre suivant, nous essaierons d'installer en utilisant ceci.

$ sudo yum list available python3
Loaded plugins: langpacks, ulninfo
Available Packages
python3.i686                 3.6.8-10.0.1.el7                ol7_optional_latest
python3.x86_64               3.6.8-10.0.1.el7                ol7_dernier ★ ici

3. Construction de l'environnement Python 3

Installez Python 3 sur Oracle Linux 7. De plus, ** venv **, qui est pratique pour construire un environnement Python, sera expliqué.

L'interface de ligne de commande OCI utilise en interne ** venv / virtulenv ** pour gérer l'environnement virtuel Python. Par conséquent, l'utilisateur n'a pas besoin d'utiliser ** venv / virtulenv ** au moment de l'installation. </ font>

3-1. Installation de Python 3

  1. Installez Python 3.
$ sudo yum install -y python3
  1. Lorsque je vérifie la version, il reste «2.7.5».
$ python -V
Python 2.7.5
  1. La raison est que la commande est python3 comme suit.
$ python3 -V
Python 3.6.8
  1. Vérifiez le lien symbolique comme suit.
$ ls -l /usr/bin/py*
-rwxr-xr-x.1 racine racine 78 5 décembre 10:34 /usr/bin/pydoc
lrwxrwxrwx.1 racine racine 8 24 décembre 16:08 /usr/bin/pydoc3 -> pydoc3.6
-rwxr-xr-x.1 racine racine 78 7 août 17:04 /usr/bin/pydoc3.6
lrwxrwxrwx.1 racine racine 7 24 décembre 13:08 /usr/bin/python -> python2
lrwxrwxrwx.1 racine racine 9 24 décembre 13:08 /usr/bin/python2 -> python2.7
-rwxr-xr-x.1 racine racine 7144 5 décembre 10:34 /usr/bin/python2.7
lrwxrwxrwx.1 racine racine 9 24 décembre 16:08 /usr/bin/python3 -> python3.6
-rwxr-xr-x.2 racine racine 11336 7 août 17:04 /usr/bin/python3.6
-rwxr-xr-x.2 racine racine 11336 7 août 17:04 /usr/bin/python3.6m
lrwxrwxrwx.1 racine racine 10 24 décembre 16:08 /usr/bin/pyvenv -> pyvenv-3.6
-rwxr-xr-x.1 racine racine 435 7 août 17:04 /usr/bin/pyvenv-3.6

** Attention ** Ne changez pas la destination du lien de / usr / bin / python en python3 ici. C'est parce que de nombreuses commandes, y compris yum, dépendent de Python 2.x. Soyez prudent car les problèmes continueront si vous remplacez le lien symbolique. </ font>

  1. Vérifiez le contenu du package rpm comme suit.
$ rpm -ql python3
/usr/bin/pydoc3
/usr/bin/pydoc3.6
/usr/bin/python3
/usr/bin/python3.6
/usr/bin/python3.6m
/usr/bin/pyvenv
/usr/bin/pyvenv-3.6
/usr/share/doc/python3-3.6.8
/usr/share/doc/python3-3.6.8/README.rst
/usr/share/licenses/python3-3.6.8
/usr/share/licenses/python3-3.6.8/LICENSE
/usr/share/man/man1/python3.1.gz
/usr/share/man/man1/python3.6.1.gz

3-2. Comprendre l'environnement virtuel Python 3

Python a de nombreuses façons de gérer plusieurs packages Pythons et Python sur une seule machine. Cette fois, je présenterai ** venv **, qui est le plus standard et utilise également le programme d'installation de l'interface CLI OCI. ** venv ** est une fonctionnalité standard du ** virtualenv ** traditionnel de Python 3.3.

Je suis confus par un mélange de ** venv ** et ** pyvenv **, mais les deux sont identiques ** venv **. pyvenv est un script qui exploite venv et est actuellement obsolète. https://docs.python.org/3.6/library/venv.html

The pyvenv script has been deprecated as of Python 3.6 in favor of using python3 -m venv to help prevent any potential confusion as to which Python interpreter a virtual environment will be based on.

Voici comment utiliser ** venv **:

** Créer un environnement virtuel **

python3 -m venv <nom du chemin de l'environnement>

** Activer l'environnement virtuel **

source <nom du chemin de l'environnement>/bin/activate

** Désactiver l'environnement virtuel **

deactivate

3-3. Python 3 Construction d'un environnement virtuel

Ce travail n'est pas nécessaire à l'installation de l'interface de ligne de commande OCI, mais il sera utilisé dans l'enquête décrite plus loin, donc il sera expliqué. </ font>

  1. Créez un environnement virtuel pour l'interface de ligne de commande OCI. ʻOci_cli` est le nom du répertoire qui construit l'environnement virtuel, et peut être une autre chaîne de caractères.
$ python3 -m venv oci_cli
  1. Après confirmation, les répertoires et fichiers suivants ont été créés. Vous n'avez pas besoin de comprendre le contenu, mais si vous voulez en savoir plus, veuillez vous référer au Manuel officiel.
$ ls -d  oci_cli/*
oci_cli/bin  oci_cli/include  oci_cli/lib  oci_cli/lib64  oci_cli/pyvenv.cfg
  1. Activez l'environnement virtuel. Lorsque l'environnement virtuel est activé, le nom de l'environnement virtuel s'affiche au début de l'invite. La partie <nom du chemin de l'environnement> est un chemin relatif à partir du répertoire courant.
$ source oci_cli/bin/activate
(oci_cli) [opc@hostname ~]$
  1. Quand je vérifie la version Python, c'est 3.6.8.
(oci_cli) [opc@hostname ~]$ python -V
Python 3.6.8
  1. Saisissez «désactiver» pour désactiver. Vous pouvez voir que la désactivation de l'environnement virtuel revient à la version d'origine.
(oci_cli) [opc@hostname ~]$ deactivate
[opc@hostname ~]$ python -V
Python 2.7.5

C'est la connaissance de base de l'environnement virtuel de Python. Ensuite, installez / mettez à jour l'interface de ligne de commande OCI.

4. Configuration de l'interface de ligne de commande OCI

Installez ensuite l'interface de ligne de commande OCI. Vous devez avoir accès à Internet pour exécuter le programme d'installation de l'interface CLI OCI.

4-1. Installation de l'interface de ligne de commande OCI

Installez l'interface de ligne de commande OCI. Même si vous utilisez déjà l'interface de ligne de commande OCI avec Python 2.x, vous devrez réinstaller la bibliothèque Python car elle est installée dans un emplacement différent. Cependant, le fichier de configuration sous $ HOME / .oci peut être utilisé tel quel.

  1. Exécutez le programme d'installation de l'interface CLI OCI. En outre, exécutez-le en tant qu'utilisateur du système d'exploitation qui exécute l'interface de ligne de commande OCI, tel qu'un utilisateur opc ou oracle.
$ bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)"
  1. Lors de la mise à jour à partir d'un existant, ce qui suit sera affiché: Entrez "y" pour l'écraser.
===> In what directory would you like to place the install? (leave blank to use '/home/opc/lib/oracle-cli'):
-- Install directory '/home/opc/lib/oracle-cli' is not empty and may contain a previous installation.

===> Remove this directory? (y/N):★ Entrez y
  1. Après cela, il vous sera demandé de saisir certaines informations, mais vous pouvez utiliser la "touche de retour".

  2. Une fois terminé, la sortie sera la suivante.

-- ** Run `exec -l $SHELL` to restart your shell. **
--
-- Installation successful.
-- Run the CLI with /home/opc/bin/oci --help
  1. Redémarrez le shell pour que le contenu ajouté à $ HOME / .bashrc prenne effet.
$ exec -l $SHELL
  1. Après la mise à jour de Python 2, il reste des lignes qui font référence à 2.7, comme illustré ci-dessous. Cependant, comme il n'est pas exécuté, il n'y a pas de problème même s'il est laissé.

$HOME/.bashrc


[[ -e "/home/opc/lib/oracle-cli/lib/python2.7/site-packages/oci_cli/bin/oci_auto
complete.sh" ]] && source "/home/opc/lib/oracle-cli/lib/python2.7/site-packages/
oci_cli/bin/oci_autocomplete.sh"

[[ -e "/home/opc/lib/oracle-cli/lib/python3.6/site-packages/oci_cli/bin/oci_auto
complete.sh" ]] && source "/home/opc/lib/oracle-cli/lib/python3.6/site-packages/
oci_cli/bin/oci_autocomplete.sh"
  1. Vérifiez la version de l'interface de ligne de commande OCI et ce sera comme suit.
$ oci --version
2.7.0

4-2. Paramètres du fichier de configuration

Vous n'avez rien à faire lors de la mise à jour à partir de Python 2. Le fichier de configuration sous $ HOME / .oci peut être utilisé tel quel. Si l'installation réussit, le message d'avertissement introduit au début ne s'affichera pas même si l'interface de ligne de commande OCI est exécutée.

Pour une nouvelle installation, reportez-vous à la page suivante pour le paramétrage.

5. Enquête sur l'environnement d'installation

J'ai expliqué l'environnement virtuel de Python, alors vérifions-le. La CLI OCI est installée dans $ HOME / lib / oracle-cli.

  1. L'interface de ligne de commande OCI n'est pas installée dans l'environnement Python 3 par défaut.
$ pip3 list --format=columns
Package    Version
---------- -------
pip        9.0.3
setuptools 39.2.0
  1. Activez l'environnement virtuel.
$ source lib/oracle-cli/bin/activate
(oracle-cli) [opc@hostname ~]$
  1. Vérifiez les packages installés dans l'environnement virtuel et vous verrez le SDK OCI Python et l'interface de ligne de commande OCI.
(oracle-cli) [opc@hostname ~]$ pip3 list
Package         Version
--------------- ----------
arrow           0.10.0
asn1crypto      1.2.0
certifi         2019.11.28
cffi            1.13.2
click           6.7
configparser    3.5.0
cryptography    2.4.2
idna            2.6
jmespath        0.9.3
oci             2.8.0 ★OCI Python SDK 
oci-cli         2.7.0 ★OCI CLI
pip             19.3.1
pycparser       2.19
pyOpenSSL       18.0.0
python-dateutil 2.7.3
pytz            2016.10
PyYAML          5.1.2
retrying        1.3.3
setuptools      42.0.2
six             1.11.0
terminaltables  3.1.0
wheel           0.33.6

** Bonus: ** Vous pouvez également utiliser pip au lieu de pip3 dans un environnement virtuel. Les deux ont la même sortie, mais lorsque vous activez l'environnement virtuel, vous pouvez utiliser le pip installé dans l'environnement virtuel. Il n'y a pas de pip dans / usr / bin.

$ find $HOME /usr/bin -name "pip*"
/home/opc/.cache/pip
/home/opc/lib/oracle-cli/lib/python3.6/site-packages/pip
/home/opc/lib/oracle-cli/lib/python3.6/site-packages/pip-19.3.1.dist-info
/home/opc/lib/oracle-cli/bin/pip
/home/opc/lib/oracle-cli/bin/pip3
/home/opc/lib/oracle-cli/bin/pip3.6
/home/opc/lib/oracle-cli/pip-selfcheck.json
/usr/bin/pip3 ★ Il n'y a pas de pip
/usr/bin/pip-3
/usr/bin/pip-3.6
/usr/bin/pip3.6
  1. Vérifiez s'il existe des packages qui ont été mis à jour. Si je viens de configurer la CLI OCI, je ne vois pas oci et oci-cli comme indiqué ci-dessous. D'autres paquets ont des dépendances, alors ne vous inquiétez pas s'ils sont anciens.
(oracle-cli) [opc@hostname ~]$ pip3 list -o
Package         Version Latest Type
--------------- ------- ------ -----
arrow           0.10.0  0.15.4 wheel
click           6.7     7.0    wheel
configparser    3.5.0   4.0.2  wheel
cryptography    2.4.2   2.8    wheel
idna            2.6     2.8    wheel
jmespath        0.9.3   0.9.4  wheel
pyOpenSSL       18.0.0  19.1.0 wheel
python-dateutil 2.7.3   2.8.1  wheel
pytz            2016.10 2019.3 wheel
PyYAML          5.1.2   5.2    sdist
six             1.11.0  1.13.0 wheel
  1. Lorsqu'une nouvelle version est publiée, vous pouvez la mettre à jour avec la commande suivante.
(oracle-cli) [opc@hostname ~]$ pip3 install oci-cli --upgrade
  1. Désactivez l'environnement virtuel et terminez.
(oracle-cli) [opc@hostname ~]$ deactivate
[opc@hostname ~]$

6. Mise à jour de l'interface de ligne de commande OCI

Plus tôt, je vous ai montré comment mettre à jour la CLI OCI avec pip3 install oci-cli --upgrade. En fait, il existe les deux méthodes de mise à jour suivantes.

  1. Réinstaller avec le programme d'installation OCI CLI
  2. Mettre à jour avec la commande pip / pip3

La réinstallation est une commande one-shot, donc je vais vous présenter la méthode pip / pip3, y compris la sortie réelle.

  1. Accédez au répertoire dans lequel l'interface de ligne de commande OCI est installée.
$cd <répertoire d'installation>
  1. Activez l'environnement virtuel et recherchez des versions plus récentes. Dans cet exemple, la nouvelle version est affichée.
source lib/oracle-cli/bin/activate
pip3 list -o
---Sortie ici ou ci-dessous---
Package         Version Latest Type
--------------- ------- ------ -----
arrow           0.10.0  0.15.5 wheel
cffi            1.13.2  1.14.0 wheel
click           6.7     7.1.1  wheel
configparser    3.5.0   4.0.2  wheel
idna            2.6     2.9    wheel
jmespath        0.9.3   0.9.5  wheel
oci             2.10.2  2.12.1 roue ★ Il existe une nouvelle version
oci-cli         2.9.0   2.9.7 roues ★ Il y a une nouvelle version
pycparser       2.19    2.20   wheel
pyOpenSSL       18.0.0  19.1.0 wheel
python-dateutil 2.7.3   2.8.1  wheel
pytz            2016.10 2019.3 wheel
PyYAML          5.1.2   5.3.1  sdist
setuptools      45.1.0  46.1.1 wheel
six             1.11.0  1.14.0 wheel
  1. Mettez à jour le package. Lorsque le message «Installé avec succès» s'affiche à la fin, la mise à jour est réussie.
pip3 install oci-cli --upgrade

Une partie de la sortie


Collecting oci-cli
  Downloading oci_cli-2.9.7-py2.py3-none-any.whl (7.5 MB)
     |████████████████████████████████| 7.5 MB 6.1 MB/s
Collecting configparser>=4.0.2
  Downloading configparser-4.0.2-py2.py3-none-any.whl (22 kB)
Requirement already satisfied, skipping upgrade: terminaltables==3.1.0 in ./lib/oracle-cli/lib/python3.6/site-packages (from oci-cli) (3.1.0)
Requirement already satisfied, skipping upgrade: certifi in ./lib/oracle-cli/lib/python3.6/site-packages (from oci-cli) (2019.11.28)
Requirement already satisfied, skipping upgrade: PyYAML==5.1.2 in ./lib/oracle-cli/lib/python3.6/site-packages (from oci-cli) (5.1.2)
Requirement already satisfied, skipping upgrade: retrying==1.3.3 in ./lib/oracle-cli/lib/python3.6/site-packages (from oci-cli) (1.3.3)
Requirement already satisfied, skipping upgrade: idna<2.7,>=2.5 in ./lib/oracle-cli/lib/python3.6/site-packages (from oci-cli) (2.6)
Requirement already satisfied, skipping upgrade: pytz>=2016.10 in ./lib/oracle-cli/lib/python3.6/site-packages (from oci-cli) (2016.10)
Collecting oci==2.12.0
  Downloading oci-2.12.0-py2.py3-none-any.whl (3.6 MB)
     |████████████████████████████████| 3.6 MB 2.3 MB/s
★ Omis
      Successfully uninstalled oci-cli-2.9.0
Successfully installed arrow-0.14.7 configparser-4.0.2 jmespath-0.9.4 oci-2.12.0 oci-cli-2.9.7 six-1.14.0
  1. Enfin, désactivez l'environnement virtuel et vous avez terminé.
(oracle-cli) [opc@hostname ~]$ deactivate
[opc@hostname ~]$

7. Résumé

  • À partir du 13 février 2020, la version de Python prise en charge par l'interface de ligne de commande OCI sera 3.5+.
  • Pour utiliser Python 3 avec Oracle Linux / CentOS 7, le référentiel standard python3 est recommandé.
  • Vous pouvez à la fois installer et mettre à niveau à l'aide du programme d'installation de l'interface CLI OCI
  • OCI CLI est installé dans l'environnement virtuel Python

Recommended Posts