jak ustawić różne zmienne PYTHONPATH odpowiednio dla python3 i python2

Chcę dodać konkretną ścieżkę biblioteki tylko do python2. Po dodaniu export PYTHONPATH="/path/to/lib/" do mojego .bashrc, wykonując python3 pojawia się błąd: twoja ścieżka PYTHONPATH wskazuje na katalog site-packages dla Pythona 2.x ale używasz Pythona 3.x!

Myślę, że jest to spowodowane tym, że python2 i python3 mają wspólną zmienną PYTHONPATH.

Więc mogę ustawić różne zmienne PYTHONPATH odpowiednio dla python2 i python3. Jeśli nie, jak Mogę dodać ścieżkę biblioteki wyłącznie do określonej wersji python?

Author: Douglas Su, 2015-12-03

2 answers

Możesz utworzyć plik konfiguracyjny mymodule.pth Pod lib/site-packages (w systemie Windows) lub lib/pythonX.Y/site-packages (w systemach Unix i Macintosh), a następnie dodać jedną linię zawierającą katalog do dodania do ścieżki Pythona.

Z docs.python2 i docs.python3 :

Plik konfiguracyjny ścieżki jest plikiem, którego nazwa ma postać name.pth i istnieje w jednym z czterech wymienionych powyżej katalogów; jego zawartość to dodatkowe pozycje (po jednym w linii), które należy dodać do sys.path. Nieistniejące elementy nigdy nie są dodawane do sys.path i nie sprawdza się, czy Element odnosi się do katalogu, a nie do pliku. Żaden element nie jest dodawany do sys.path więcej niż jeden raz. Puste linie i linie zaczynające się od # są pomijane. Wykonywane są linie zaczynające się od import (po których następuje spacja lub tabulator).

 17
Author: WaKo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-31 13:12:27

PYTHONPATH jest w pewnym sensie hack, jeśli chodzi o zarządzanie pakietami. "Ładnym" rozwiązaniem byłoby spakowanie twojej Biblioteki i zainstalowanie .

To może zabrzmieć bardziej skomplikowanie niż jest, więc pokażę Ci, jak to działa.

Załóżmy, że Twój "Pakiet" ma pojedynczy plik o nazwie {[8] } i przechowujemy go w /home/user/mylib/wow.py.

Utwórz plik /home/user/mylib/setup.py o następującej treści:

from setuptools import setup

setup(name="WowPackage",
      packages=["."],
)

To wszystko, teraz możesz "poprawnie zainstalować" swój pakiet do wybranej przez Ciebie dystrybucji Pythona bez konieczności zawracania sobie głowy PYTHONPATH. Jeśli chodzi o "właściwą instalację", masz co najmniej trzy opcje: {]}

  • "naprawdę właściwe". Skopiuje Twój kod do katalogu python site-packages:

    $ python setup.py install
    
  • "rozwój". Dodaje tylko link ze strony python site-packages do /home/user/mylib. Oznacza to, że zmiany w kodzie w katalogu będą skuteczne.

    $ python setup.py develop
    
  • "użytkownik". Jeśli tak nie chcesz zapisywać do katalogów systemowych, możesz zainstalować pakiet ("properly "lub" in development mode") do katalogu /home/user/.local, gdzie Python znajdzie je również samodzielnie. W tym celu wystarczy dodać --user do komendy.

    $ python setup.py install --user
    $ python setup.py develop --user
    

Aby usunąć pakiet zainstalowany w trybie deweloperskim, wykonaj

$ python setup.py develop -u

Lub

$ python setup.py develop -u --user

Aby usunąć pakiet zainstalowany "poprawnie", wykonaj

 $ pip uninstall WowPackage

Jeśli Twój Pakiet jest bardziej interesujący niż pojedynczy plik (np. masz podkatalogów i tym podobne), po prostu lista tych w parametrze packages funkcji setup (będziesz musiał wypisać wszystko rekurencyjnie, dlatego będziesz używał funkcji pomocniczej dla większych bibliotek). Gdy już się przyzwyczaisz, koniecznie przeczytaj bardziej szczegółową instrukcję.

Na koniec idź i dodaj swój pakiet do PyPI - to jest tak proste, jak wywołanie python setup.py sdist register upload (będziesz potrzebował nazwy użytkownika PyPI).

 20
Author: KT.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-03 13:12:47