
python2.7
Ich 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.7
installiert pip
, aber vielleicht ist während der Installation etwas passiert und jetzt habe ich keins mehr pip
. Ich habe aber immer noch Folgendes python2.7
installiert:
$ python --version
Python 2.7.16
Also habe ich es einfach pip
so 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 pip
in /usr/share/
oder an einem öffentlicheren Ort sein sollte, damit es richtig funktioniert? Hätte ich sudo python /tmp/get-pip.py
zur Installation verwenden sollen pip
? Ich habe nicht vor, Python als Root auszuführen, aber apt
für Installationen ist immer Root erforderlich. Vielleicht hätte dies also pip
auch bei der Installation der Fall sein sollen? In der Dokumentation wurde dies nicht angegeben.
pip
Wie 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 virtualenv
ich 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, virtualenv
es zu verwenden, werden immer diese Fehler angezeigt.
Insgesamt lautet meine Frage also, wie die Installation korrekt erfolgt python2.7
, pip
und virtualenv
zwar 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 pip
und 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ß, pip
da /home/me/.local/bin/pip
diese Datei nicht existiert. Vielleicht hat Bash einen Cache? Wie auch immer, nächste Installation pip
und virtualenv
aus 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 virtualenv
ich 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-pip
ggf. auch für Python 3-Unterstützung).
Sie müssen wahrscheinlich die in Ihrem Home-Verzeichnis installierten Versionen von pip
und virtualenv
sowie alle anderen PATH
auß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 virtualenv
werde das Richtige tun.
Antwort2
Nach weiteren Untersuchungen und Gesprächen mitStephen KittIch habe festgestellt, dass ich zwei verschiedene Versionen virtualenv
auf meinem PC hatte:
$ find /usr/ -iname "virtualenv" | grep bin
/usr/local/bin/virtualenv
/usr/bin/virtualenv
Das hier /usr/bin/virtualenv
gibt 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/virtualenv
installiert worden sein muss pip
. Also deinstallierte ich es als pip
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
Nun ist alles gut:
$ which virtualenv
/usr/bin/virtualenv
$ find /usr/ -iname "virtualenv" | grep bin
/usr/bin/virtualenv