Overview
Dans un environnement de développement partagé, si vous mettez pyenv pour chaque utilisateur, la capacité sera grande, donc Une histoire pour en mettre une en commun afin qu'elle puisse être réutilisée par les utilisateurs généraux.
pyenv
pyenv
pyenv
La méthode adoptée par docker.
Vous pouvez utiliser docker, mais comme c'est un gros problème, je vais utiliser vagrant.
$ 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:Mer 5 février 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
Installez dans / 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/
Entrez à nouveau vm
[vagrant@localhost ~]$ pyenv -v
pyenv 1.2.16
[vagrant@localhost ~]$ pyenv versions
* system (set by /opt/pyenv/version)
Puisque pyenv install
ne peut être effectué que par root,
[root@localhost ~]# pyenv install 3.8.1
(..snip..)
[root@localhost ~]# pyenv install 3.7.6
(..snip..)
Il est entré.
[root@localhost ~]# pyenv versions
* system (set by /opt/pyenv/version)
3.7.6
3.8.1
Également confirmé par les utilisateurs généraux.
Je n'ai pas la permission d'écrire, donc j'obtiens pyenv: cannot rehash: / opt / pyenv / shims n'est pas accessible en écriture
, mais ne vous inquiétez pas.
[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
C'est la préparation.
Exécutez dans vm.
N'oubliez pas d'appartenir au groupe pyenv
.
[root@localhost ~]# useradd foo -G pyenv
[root@localhost ~]# id foo
uid=1001(foo) gid=1002(foo) groups=1002(foo),1001(pyenv)
Pour ajouter un utilisateur existant au groupe:
[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)
Puisque pyenv global
ne peut pas être utilisé, pyenv local
est utilisé pour chaque utilisateur.
[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
Si vous n'utilisez pas virtualenv, n'oubliez pas d'ajouter l'option --user
à pip install
.
[foo@localhost ~]$ python -m pip install --user numpy==1.15
[foo@localhost ~]$ python -c 'import numpy; print(numpy.__version__)'
1.15.0
fin.
On ne sait pas ce qui se passera si vous l'utilisez car il ne fonctionne pas correctement. À vos risques et périls.
Utilisons docker.
Recommended Posts