Pyenv al rescate
Hace poco cambié a Debian testing nuevamente para entre otras cosas poder usar Python 3.6. Empecé a trabajar con esta versión, a crear mis Lambda Layers y todo bien hasta que Debian testing cambió a Python 3.7. Bueno, me dije a mí mismo, no hay drama con alternative
puedo cambiar versiones de Python sin problemas o de última decirle a virtualenv
que use un intérprete u otro.
:~# update-alternatives --config python
There are 3 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/python3.6 3 auto mode
1 /usr/bin/python2 1 manual mode
2 /usr/bin/python3 2 manual mode
* 3 /usr/bin/python3.6 3 manual mode
Press <enter> to keep the current choice[*], or type selection number: 3
Pero incluso usando alternative
o forzando el intérprete para usar Python 3.6 al parecer queda algo siempre apuntando a Python 3.7:
$ virtualenv -p /usr/bin/python3.6 test
Running virtualenv with interpreter /usr/bin/python3.6
Traceback (most recent call last):
File "/home/lgallard/.local/lib/python3.7/site-packages/virtualenv.py", line 22, in <module>
import distutils.spawn
ModuleNotFoundError: No module named 'distutils.spawn'
pyenv al rescate
Existe una manejador de versiones de Python llamado pyenv el cual permite configurar el entorno a usar tanto local como de forma global.
Por ejemplo, para instalar la versión de Python 3.6.8 basta con hacer:
pyenv install 3.6.8
Podemos verificar las versiones de la siguiente manera:
$ pyenv versions
system
* 3.6.8 (set by /home/lgallard/.pyenv/version)
Luego para usar la versión instalada con pyenv, basta con pasarle la ruta:
$ virtualenv -p ~/.pyenv/versions/3.6.8/bin/python test
Running virtualenv with interpreter /home/lgallard/.pyenv/versions/3.6.8/bin/python
Using base prefix '/home/lgallard/.pyenv/versions/3.6.8'
New python executable in /home/lgallard/test/bin/python
Installing setuptools, pip, wheel...
done.
./test/bin/python --version
Python 3.6.8
De esta forma pude seguir usando la versión especifica de Python que necesitaba.
Referencias:
Leave a Comment