[PYTHON] Die Geschichte des Teilens der Pyenv-Umgebung mit mehreren Benutzern

Overview

Wenn Sie in einer gemeinsam genutzten Entwicklungsumgebung pyenv für jeden Benutzer festlegen, ist die Kapazität also groß Eine gemeinsame Geschichte, damit sie von allgemeinen Benutzern wiederverwendet werden kann.

Der Punkt

Die Methode, die Docker auch anwendet.

Umgebung

Sie können Docker verwenden, aber da es eine große Sache ist, werde ich Vagabund verwenden.

$ vagrant -v
Vagrant 2.2.3

Vagrantfile


Vagrant.configure("2") do |config|
  config.vm.box = "centos/7"
end

Host-Seite

Anlaufen

$ vagrant up

Geben Sie vm ein

$ vagrant ssh
Last login: Wed Feb  5 03:53:55 2020 from 10.0.2.2
[vagrant@localhost ~]$

Danach laufen Sie in vm

Sei Wurzel

[vagrant@localhost ~]$ sudo su -
Last login:Mi 5. Februar 03:50:50 UTC 2020 on pts/1
[root@localhost ~]#

Erstellen Sie eine Pyenv-Umgebung

Bereiten Sie sh für die Einstellung von Umgebungsvariablen vor

pyenv.sh


if [ -e /opt/pyenv ]; then
    export PYENV_ROOT=/opt/pyenv
    export PATH="${PYENV_ROOT}/bin:$PATH"
    eval "$(pyenv init -)"
fi

Installieren Sie in / opt / pyenv.

$ yum install -y \
    @development zlib-devel bzip2 bzip2-devel readline-devel sqlite \
    sqlite-devel openssl-devel xz xz-devel libffi-devel findutils

$ curl https://pyenv.run | PYENV_ROOT=/opt/pyenv bash

$ groupadd pyenv \
    && chown -R :pyenv /opt/pyenv/ \
    && chmod g+r -R /opt/pyenv/

$ cp /vagrant/pyenv.sh /etc/profile.d/

Bestätigung

Geben Sie vm erneut ein

[vagrant@localhost ~]$ pyenv -v
pyenv 1.2.16

[vagrant@localhost ~]$ pyenv versions
* system (set by /opt/pyenv/version)

Fügen Sie Python ein, indem Sie die Version angeben

Da pyenv install nur von root ausgeführt werden kann,

[root@localhost ~]# pyenv install 3.8.1
(..snip..)

[root@localhost ~]# pyenv install 3.7.6
(..snip..)

Es ist eingetreten.

[root@localhost ~]# pyenv  versions
* system (set by /opt/pyenv/version)
  3.7.6
  3.8.1

Auch von allgemeinen Benutzern bestätigt. Ich habe keine Schreibberechtigung, daher erhalte ich "pyenv: kann nicht erneut aufbereiten: / opt / pyenv / shims ist nicht beschreibbar", aber keine Sorge.

[root@localhost ~]# su - vagrant
Last login: Wed Feb  5 04:01:04 UTC 2020 from 10.0.2.2 on pts/0
pyenv: cannot rehash: /opt/pyenv/shims isn't writable
[vagrant@localhost ~]$ pyenv versions
* system (set by /opt/pyenv/version)
  3.7.6
  3.8.1

Dies ist die Vorbereitung.

Funktionsprüfung

Führen Sie in vm.

Allgemeine Benutzer hinzufügen

Vergessen Sie nicht, zur Gruppe "pyenv" zu gehören.

[root@localhost ~]# useradd foo -G pyenv

[root@localhost ~]# id foo
uid=1001(foo) gid=1002(foo) groups=1002(foo),1001(pyenv)

So fügen Sie einen vorhandenen Benutzer zur Gruppe hinzu:

[root@localhost ~]# useradd bar
[root@localhost ~]# gpasswd -a bar pyenv

[root@localhost ~]# id bar
uid=1002(bar) gid=1003(bar) groups=1003(bar),1001(pyenv)

Verwenden Sie pyenv als allgemeinen Benutzer

Da "pyenv global" nicht verwendet werden kann, wird "pyenv local" für jeden Benutzer verwendet.

Diejenigen, die 3.7.6 verwenden möchten

[root@localhost ~]# su - bar
Last login: Wed Feb  5 03:55:34 UTC 2020 on pts/2
pyenv: cannot rehash: /opt/pyenv/shims isn't writable

[bar@localhost ~]$ pyenv local 3.7.6
[bar@localhost ~]$ python -V
Python 3.7.6

Sie können virtualenv auch in pyenv verwenden

[bar@localhost ~]$ python -m venv .venv
[bar@localhost ~]$ . .venv/bin/activate

(.venv) [bar@localhost ~]$ python -V
Python 3.7.6
(.venv) [bar@localhost ~]$ which python
~/.venv/bin/python
(.venv) [bar@localhost ~]$ pip install numpy==1.18.1

(.venv) [bar@localhost ~]$ python -c 'import numpy; print(numpy.__version__)'
1.18.1

Diejenigen, die 3.8.1 verwenden möchten

[root@localhost ~]# su - foo
Last login: Wed Feb  5 03:54:47 UTC 2020 on pts/1
pyenv: cannot rehash: /opt/pyenv/shims isn't writable

[foo@localhost ~]$ pyenv local 3.8.1
[foo@localhost ~]$ python -V
Python 3.8.1

Wenn Sie virtualenv nicht verwenden, vergessen Sie nicht, die Option "--user" zu "pip install" hinzuzufügen.

[foo@localhost ~]$ python -m pip install --user numpy==1.15

[foo@localhost ~]$ python -c 'import numpy; print(numpy.__version__)'
1.15.0

Ende.

Es ist nicht bekannt, was passieren wird, wenn Sie es verwenden, da es nicht ordnungsgemäß funktioniert. Auf eigene Gefahr.

ich meine

Verwenden wir Docker.

Recommended Posts

Die Geschichte des Teilens der Pyenv-Umgebung mit mehreren Benutzern
Verwenden Sie mit pyenv mehrere Versionen der Python-Umgebung
Die Geschichte des tiefen Lernens mit TPU
Hinweis: Bereiten Sie die Umgebung von CmdStanPy mit Docker vor
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
Die Geschichte von sys.path.append ()
Die Geschichte des Stoppens des Produktionsdienstes mit dem Befehl hostname
Die Geschichte des Aufbaus der schnellsten Linux-Umgebung der Welt
Berechnen Sie den Gesamtwert mehrerer Spalten mit awk
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Vorbereiten der Ausführungsumgebung von PyTorch mit Docker November 2019
Passen Sie das Verhältnis mehrerer Zahlen mit der Rasterspezifikation von Matplotlib an
Die Geschichte des Baus von Zabbix 4.4
Die Geschichte der Implementierung des Themas Facebook Messenger Bot mit Python
Vereinheitlichen Sie die Umgebung des Python-Entwicklungsteams, beginnend mit Poetry
Die Geschichte der Anzeige von Bildern mit OpenCV oder PIL (nur)
Die Geschichte eines Rubinisten, der mit Python :: Dict-Daten mit Pycall kämpft
Die Geschichte, wie man mit discord.py einen Fragenkasten-Bot erstellt
Die Geschichte des Debuggens in der lokalen Umgebung, weil die Kompilierung mit Read the Docs nicht funktioniert hat
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
Die Geschichte von Python und die Geschichte von NaN
Die Geschichte, dass man mit Pycharm kein Pygame spielen kann
Erhöhen Sie die Version von pyenv selbst
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
django kann nicht in der Entwicklungsumgebung von pipenv + pyenv installiert werden
Die Geschichte der Teilnahme an AtCoder
Die Geschichte, einen Standardtreiber für db mit Python zu erstellen.
Die Geschichte der Ausgabe des Planetarium-Meisters im PDF-Format mit Pycairo
Die Geschichte des "Lochs" in der Akte
Die Geschichte der Visualisierung beliebter Qiita-Tags mit Bar Chart Race
Die Geschichte des erneuten Bereitstellens des Anwendungsservers
Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Die Geschichte des Exportierens eines Programms
Die Geschichte, ein Modul zu erstellen, das E-Mails mit Python überspringt
Bereiten Sie die Entwicklungsumgebung mit anyenv vor
Erstellen einer Umgebung mit pyenv und pyenv-virtualenv
Eine Geschichte, die die Gegenwart von Qiita mit Qiita API + Elasticsearch + Kibana visualisiert
Die Geschichte eines Parksensors in 10 Minuten mit dem GrovePi + Starter Kit
Die Geschichte, wie man mit Python einen 100-Yen-Frühstücks-Bot für die Universität macht
django-allauth verwaltet mehrere Benutzertypen mithilfe des benutzerdefinierten Benutzers (Benutzer mit mehreren Typen).
Die Geschichte einer Soundkamera mit Touch Designer und ReSpeaker
Bereiten Sie die Umgebung von Chainer auf der EC2-Spot-Instanz mit AWS Lambda vor
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Die Geschichte des Versuchs, SSH_AUTH_SOCK mit LD_PRELOAD auf dem Bildschirm veraltet zu halten
Die Geschichte der Verwendung von mysqlclient, da PyMySQL nicht mit Django 2.2 verwendet werden kann
[Pyenv] Erstellen einer Python-Umgebung mit Ubuntu 16.04
[Ubuntu 18.04] Erstellen Sie eine Python-Umgebung mit pyenv + pipenv
Die Geschichte des Versuchs, den Client wieder zu verbinden
Die Geschichte eines Fehlers in PyOCR
Verwenden Sie smbus mit python3 in einer pyenv-Umgebung
Richten Sie die Größe der Farbleiste an der Matplotlib aus
Die Geschichte, MeCab in Ubuntu 16.04 zu setzen
Überprüfen Sie die Existenz der Datei mit Python
Informationen zur virtuellen Umgebung von Python Version 3.7
Die Geschichte einer unveränderlichen Form