GNU/Linux >> Znalost Linux >  >> Linux

Virtualenv používá nesprávný python, i když je první v $PATH

Můj problém byl, že jsem se nedávno přestěhoval můj projekt s virtualenv do jiného umístění, kvůli tomuto activate skript byl špatný VIRTUAL_ENV cesta.

$ cat path_to_your_env/bin/activate

... # some declarations

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

... # some declarations

Chcete-li to vyřešit, aktualizujte VIRTUAL_ENV v activate skript.

Také možná budete muset opravit první řádek vašeho bin/pip pro odkaz na skutečnou cestu pythonu.


Pokud nedostanete program, který which říká, že byste měli dostat, musíte se podívat výše v řetězci než platformový exekutor. Shelly mají obvykle způsob alias příkazů a na většině unixových shellů stačí zadat alias abyste viděli, které příkazy byly přemapovány. Pak už jen stačí přejít do konfiguračních souborů vašeho shellu a odstranit alias.

Někdy lidé alias python pokusit se vyřešit, kterou python by měli používat. Ale obvykle existují jiné, lepší způsoby. Na mém linuxovém počítači například python3 je v cestě, ale je symbolickým odkazem na skutečný python, který používám.

[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] ~ $ 

To je hezké, protože programy bez shellu, na kterých běží python, dostávají to samé co já a virtuální prostředí fungují přirozeně.


Jak tdelaney navrhl v komentářích, spustil jsem alias a zjistil jsem, že jsem předtím vytvořil alias python na /usr/bin/python3.5 v mém .bashrc .

Odstranil jsem tento alias ze svého .bashrc , spustil unalias python a source ~/.bashrc a problém byl vyřešen.


Na Cygwinu mám stále problém, i když jsem vytvořil symbolický odkaz na bod /usr/bin/python na F:\Python27\python.exe . Zde po source env/Scripts/activate , which python je stále /usr/bin/python .

Po dlouhé době jsem přišel na řešení. Místo použití virtualenv env , musíte použít virtualenv -p F:\Python27\python.exe env i když jste vytvořili symbolický odkaz.


Linux
  1. Proč nelze najít Read /run/user/1000/gvfs, i když běží jako root?

  2. Otázky Python virtualenv

  3. Linux, proč nemohu psát, i když mám skupinová oprávnění?

  1. Aplikaci Node.js nelze spustit na portu 80, i když port neblokuje žádný jiný proces

  2. git gc:na zařízení nezbývá místo, i když jsou k dispozici 3 GB a tmp_pack pouze 16 MB

  3. Nginx se stále pokouší otevřít výchozí soubor protokolu chyb, i když jsem při opětovném načítání nastavil konfigurační soubor nginx

  1. Top 20 použití Linuxu

  2. Na zařízení nezbývá místo, i když je?

  3. /bin/ls nebyl nalezen, i když existuje!