Installieren Sie virtualenv für python2.7 unter Debian 10

Installieren Sie virtualenv für python2.7 unter Debian 10

python2.7Ich möchte mit verwenden virtualenv. Ich habe vor Kurzem ein Upgrade von Debian 8 auf Debian 10 durchgeführt. Ursprünglich hatte ich Debian 8 python2.7installiert pip, aber vielleicht ist während der Installation etwas passiert und jetzt habe ich keins mehr pip. Ich habe aber immer noch Folgendes python2.7installiert:

$ python --version
Python 2.7.16

Also habe ich es einfach pipso installiert:

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

Und jetzt kann ich sehen, dass ich pip installiert habe:

$ 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)

Erstens: Soll Pip hier installiert werden?Unter meinem Home-Verzeichnis? Ich bin der einzige Benutzer auf diesem PC, aber ich bin mir nicht sicher, ob es pipin /usr/share/oder an einem öffentlicheren Ort sein sollte, damit es richtig funktioniert? Hätte ich sudo python /tmp/get-pip.pyzur Installation verwenden sollen pip? Ich habe nicht vor, Python als Root auszuführen, aber aptfür Installationen ist immer Root erforderlich. Vielleicht hätte dies also pipauch bei der Installation der Fall sein sollen? In der Dokumentation wurde dies nicht angegeben.

pipWie dem auch sei, als nächstes habe ich versucht , auf die neueste Version zu aktualisieren und Folgendes zu installieren 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)

Alles scheint gut zu sein. Aber wenn ich versuche zu überprüfen, welche Version virtualenvich habe, schlägt es fehl:

$ 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__

Und wenn ich versuche, virtualenves zu verwenden, werden immer diese Fehler angezeigt.

Insgesamt lautet meine Frage also, wie die Installation korrekt erfolgt python2.7, pipund virtualenvzwar unter Debian 10. Mir macht es nichts aus, alles zu deinstallieren und von vorne zu beginnen, wenn es sein muss.


Wie angewiesen vonStephen KittIn der Antwort unten habe ich versucht, die Versionen von pipund zu deinstallieren virtualenv, die ich zuvor mit installiert habe get-pip.py. Dies führt jedoch zu einigen neuen Fehlern. Ich werde genau erklären, was ich getan habe ...

Erste Deinstallation 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

Scheint in Ordnung zu sein. Dann deinstallieren Sie 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

Das scheint auch in Ordnung zu sein. Ich bin mir nicht sicher, woher Bash das weiß, pipda /home/me/.local/bin/pipdiese Datei nicht existiert. Vielleicht hat Bash einen Cache? Wie auch immer, nächste Installation pipund virtualenvaus dem Debian 10-Repo:

$ 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

Aber wenn ich versuche zu prüfen, welche Version virtualenvich jetzt habe, schlägt es fehl:

$ 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

Antwort1

Um Fehler zu vermeidendraußenFür die virtuellen Umgebungen empfehle ich die Verwendung der gepackten Versionen:

sudo apt install python-pip virtualenv

(sowie python3-pipggf. auch für Python 3-Unterstützung).

Sie müssen wahrscheinlich die in Ihrem Home-Verzeichnis installierten Versionen von pipund virtualenvsowie alle anderen PATHaußerhalb Ihres Verzeichnisses entfernen /usr/bin.

Beim Einrichten Ihrer virtuellen Umgebungen können Sie Python 2.7 angeben:

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

und virtualenvwerde das Richtige tun.

Antwort2

Nach weiteren Untersuchungen und Gesprächen mitStephen KittIch habe festgestellt, dass ich zwei verschiedene Versionen virtualenvauf meinem PC hatte:

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

Das hier /usr/bin/virtualenvgibt keine Fehler aus, wenn ich es ausführe:

$ /usr/bin/virtualenv --version
15.1.0

Und bei einigen Websuchen stellte ich fest, dass das in als Root /usr/local/bin/virtualenvinstalliert worden sein muss pip. Also deinstallierte ich es als pipRoot:

$ 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

Nun ist alles gut:

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

verwandte Informationen