Instale virtualenv para python2.7 en debian 10

Instale virtualenv para python2.7 en debian 10

Quiero usar python2.7con virtualenv. Recientemente actualicé de Debian 8 a Debian 10. Originalmente tenía python2.7e pipinstalé Debian 8, pero tal vez sucedió algo durante la instalación y ahora no tengo pip. Pero todavía tengo python2.7instalado:

$ python --version
Python 2.7.16

Entonces lo instalé pipasí:

$ cd /tmp
$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

Y ahora puedo ver que tengo pip instalado:

$ which pip
/home/me/.local/bin/pip
$ pip --version
pip 20.0.2 from /home/me/.local/lib/python2.7/site-packages/pip (python 2.7)

En primer lugar, ¿es aquí donde se debe instalar pip?¿En mi directorio de inicio? Soy el único usuario de esta PC, pero no estoy seguro de si pipdebería estar en /usr/share/algún lugar más público para que funcione correctamente. ¿Debería haber utilizado sudo python /tmp/get-pip.pypara instalar pip? No planeo ejecutar Python como root, pero aptsiempre necesito root para las instalaciones, por lo que tal vez la instalación piptambién debería haberlo hecho. La documentación no lo especificaba.

De todos modos, a continuación intenté actualizar pipa la última versión e instalar virtualenv:

$ pip install -U pip
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Defaulting to user installation because normal site-packages is not writeable
Requirement already up-to-date: pip in ./.local/lib/python2.7/site-packages (20.0.2)

$ pip install virtualenv
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: virtualenv in ./.local/lib/python2.7/site-packages (15.1.0)

Todo parece bien. Pero cuando intento comprobar qué versión virtualenvtengo, falla:

$ virtualenv --version
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 6, in <module>
    from virtualenv.__main__ import run_with_catch
ImportError: No module named __main__

Y si intento usarlo, virtualenvsiempre arroja estos errores.

En general, mi pregunta es cómo instalar correctamente python2.7y pipen virtualenvDebian 10. No me importa desinstalar todo y comenzar de nuevo si eso es lo que hace falta.


Según las instrucciones deEsteban KittEn la respuesta a continuación, intenté desinstalar las versiones de pipy virtualenvque instalé anteriormente get-pip.py, sin embargo, esto genera algunos errores nuevos. Explicaré exactamente lo que he hecho...

Primera desinstalación virtualenv:

$ pip uninstall virtualenv
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Found existing installation: virtualenv 15.1.0
Uninstalling virtualenv-15.1.0:
  Would remove:
    /home/me/.local/bin/virtualenv
    /home/me/.local/lib/python2.7/site-packages/virtualenv-15.1.0.dist-info/*
    /home/me/.local/lib/python2.7/site-packages/virtualenv.py
    /home/me/.local/lib/python2.7/site-packages/virtualenv_support/*
Proceed (y/n)? y
  Successfully uninstalled virtualenv-15.1.0

Se ve bien. Luego desinstale pip:

$ python -m pip uninstall pip
DEPRECATION: Python 2.7 reached the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 is no longer maintained. A future version of pip will drop support for Python 2.7. More details about Python 2 support in pip, can be found at https://pip.pypa.io/en/latest/development/release-process/#python-2-support
Found existing installation: pip 20.0.2
Uninstalling pip-20.0.2:
  Would remove:
    /home/me/.local/bin/pip
    /home/me/.local/bin/pip2
    /home/me/.local/bin/pip2.7
    /home/me/.local/lib/python2.7/site-packages/pip-20.0.2.dist-info/*
    /home/me/.local/lib/python2.7/site-packages/pip/*
Proceed (y/n)? y
  Successfully uninstalled pip-20.0.2

$ pip --version
bash: /home/me/.local/bin/pip: No such file or directory
$ ls -a ~/.local/bin
.  ..  chardetect  easy_install  easy_install-2.7  flake8  pew  pipenv  pycodestyle  pyflakes  virtualenv-clone

Eso también parece estar bien. No estoy seguro de cómo bash sabe que pipdebería ser así, /home/me/.local/bin/pipya que ese archivo no existe. ¿Quizás bash tenga un caché? De todos modos, próxima instalación pipy virtualenvdesde el repositorio de Debian 10:

$ sudo apt install python-pip virtualenv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  python3-distutils python3-lib2to3 python3-virtualenv
The following NEW packages will be installed:
  python-pip python3-distutils python3-lib2to3 python3-virtualenv virtualenv

Pero cuando intento comprobar qué versión virtualenvtengo ahora, falla:

$ virtualenv --version
Traceback (most recent call last):
  File "/usr/local/bin/virtualenv", line 6, in <module>
    from virtualenv.__main__ import run_with_catch
  File "/usr/local/lib/python2.7/dist-packages/virtualenv/__init__.py", line 3, in <module>
    from .run import cli_run
  File "/usr/local/lib/python2.7/dist-packages/virtualenv/run/__init__.py", line 6, in <module>
    from virtualenv.run.app_data import AppDataAction
  File "/usr/local/lib/python2.7/dist-packages/virtualenv/run/app_data.py", line 8, in <module>
    from virtualenv.util.lock import ReentrantFileLock
  File "/usr/local/lib/python2.7/dist-packages/virtualenv/util/lock.py", line 11, in <module>
    from virtualenv.util.path import Path
  File "/usr/local/lib/python2.7/dist-packages/virtualenv/util/path/__init__.py", line 3, in <module>
    from ._pathlib import Path
  File "/usr/local/lib/python2.7/dist-packages/virtualenv/util/path/_pathlib/__init__.py", line 42, in <module>
    from pathlib2 import Path
ImportError: No module named pathlib2

Respuesta1

Para evitar estropear las cosasafueralos virtualenvs, recomiendo usar las versiones empaquetadas:

sudo apt install python-pip virtualenv

(junto con python3-pipla compatibilidad con Python 3, si corresponde).

Probablemente necesitarás eliminar las versiones pipinstaladas virtualenven tu directorio de inicio y cualquier otra en tu PATHdirectorio externo /usr/bin.

Al configurar sus entornos virtuales, puede especificar Python 2.7:

virtualenv -p /usr/bin/python2.7 ...

y virtualenvharé lo correcto.

Respuesta2

Tras una mayor investigación y discusión conEsteban KittDescubrí que tenía 2 versiones diferentes virtualenven mi PC:

$ find /usr/ -iname "virtualenv" | grep bin
/usr/local/bin/virtualenv
/usr/bin/virtualenv

El de /usr/bin/virtualenvno arroja errores cuando lo ejecuto:

$ /usr/bin/virtualenv --version
15.1.0

Y al hacer algunas búsquedas en la web, encontré que el que /usr/local/bin/virtualenvdebe haberse instalado pipcomo root. Así que lo desinstalé pipcomo root:

$ sudo pip uninstall virtualenv
Uninstalling virtualenv-20.0.13:
  Would remove:
    /usr/local/bin/virtualenv
    /usr/local/lib/python2.7/dist-packages/virtualenv-20.0.13.dist-info/*
    /usr/local/lib/python2.7/dist-packages/virtualenv/*
Proceed (y/n)? y
  Successfully uninstalled virtualenv-20.0.13

Ahora todo está bien:

$ which virtualenv
/usr/bin/virtualenv
$ find /usr/ -iname "virtualenv" | grep bin
/usr/bin/virtualenv

información relacionada