GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Virtualenv verwendet falsches Python, obwohl es an erster Stelle in $PATH steht

Mein Problem war, dass ich vor kurzem umgezogen bin mein Projekt mit virtualenv an einen anderen Ort, wegen diesem activate Skript war falsch VIRTUAL_ENV Pfad.

$ cat path_to_your_env/bin/activate

... # some declarations

VIRTUAL_ENV="/path_to_your_env/bin/python"  # <-- THIS LINE
export VIRTUAL_ENV

... # some declarations

Um dies zu beheben, aktualisieren Sie einfach VIRTUAL_ENV in activate Skript.

Außerdem müssen Sie möglicherweise die erste Zeile Ihres bin/pip korrigieren um auf einen echten Python-Pfad zu verlinken.


Wenn Sie das Programm nicht bekommen, dass which sagt, dass Sie bekommen sollten, müssen Sie in der Kette weiter oben suchen als der Plattform-Executor. Shells haben normalerweise eine Möglichkeit, Befehle zu aliasieren, und bei den meisten Unixy-Shells können Sie einfach alias eingeben um zu sehen, welche Befehle neu zugeordnet wurden. Dann müssen Sie nur noch zu den Konfigurationsdateien Ihrer Shell gehen und den Alias ​​entfernen.

Manchmal alias python um herauszufinden, welche Python sie verwenden sollten. Aber es gibt meist andere, bessere Wege. Auf meinem Linux-Rechner zum Beispiel python3 befindet sich im Pfad, ist aber ein Symlink zu dem echten Python, den ich verwende.

[email protected] ~ $ which python3
/usr/bin/python3
[email protected] ~ $ ls -l /usr/bin/python3
lrwxrwxrwx 1 root root 9 Feb 17  2016 /usr/bin/python3 -> python3.4
[email protected] ~ $ 

Das ist nett, weil Nicht-Shell-Programme, auf denen Python läuft, das gleiche bekommen wie ich und virtuelle Umgebungen natürlich funktionieren.


Wie tdelaney in den Kommentaren vorgeschlagen hat, habe ich alias ausgeführt und stellte fest, dass ich zuvor python als Alias ​​verwendet hatte bis /usr/bin/python3.5 in meinem .bashrc .

Ich habe diesen Alias ​​aus meinem .bashrc entfernt , lief unalias python , und source ~/.bashrc und das Problem wurde gelöst.


Auf Cygwin habe ich immer noch ein Problem, selbst nachdem ich einen Symlink zu Punkt /usr/bin/python erstellt habe bis F:\Python27\python.exe . Hier nach source env/Scripts/activate , which python ist immer noch /usr/bin/python .

Nach langer Zeit habe ich eine Lösung gefunden. Anstatt virtualenv env zu verwenden , müssen Sie virtualenv -p F:\Python27\python.exe env verwenden obwohl Sie einen Symlink erstellt haben.


Linux
  1. Zwei großartige Anwendungen für den cp-Befehl:Bash-Shortcuts

  2. Einrichten der Entwicklungsumgebung python virtualenv unter Debian Linux

  3. Linux, warum kann ich nicht schreiben, obwohl ich Gruppenrechte habe?

  4. Die Node.js-App kann nicht auf Port 80 ausgeführt werden, obwohl kein anderer Prozess den Port blockiert

  5. Gradle findet das falsche JAVA_HOME, obwohl es richtig eingestellt ist

Python if..else-Anweisung

Top 20 Verwendungen von Linux

Löschen bis Zeilenende verwendet die falsche Hintergrundfarbe in Tmux?

dlsym gibt NULL zurück, obwohl das Symbol existiert

/bin/ls nicht gefunden, obwohl es existiert!

`Berechtigung verweigert` zum CD in ein Verzeichnis, obwohl die Berechtigungen korrekt sind