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.
pyenv
GruppeDie Methode, die Docker auch anwendet.
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
$ vagrant up
$ vagrant ssh
Last login: Wed Feb 5 03:53:55 2020 from 10.0.2.2
[vagrant@localhost ~]$
[vagrant@localhost ~]$ sudo su -
Last login:Mi 5. Februar 03:50:50 UTC 2020 on pts/1
[root@localhost ~]#
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/
Geben Sie vm erneut ein
[vagrant@localhost ~]$ pyenv -v
pyenv 1.2.16
[vagrant@localhost ~]$ pyenv versions
* system (set by /opt/pyenv/version)
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.
Führen Sie in vm.
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)
Da "pyenv global" nicht verwendet werden kann, wird "pyenv local" für jeden Benutzer verwendet.
[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
[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
[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.
Verwenden wir Docker.