Katalog site-packagesjest wymieniany w różnych artykułach związanych z Pythonem. Co to jest? Jak tego użyć?
Katalog site-packagesjest wymieniany w różnych artykułach związanych z Pythonem. Co to jest? Jak tego użyć?
Odpowiedzi:
site-packagesjest katalogiem docelowym ręcznie tworzonych pakietów Pythona. Kiedy budujesz i instalujesz pakiety Pythona ze źródła (używając distutils , prawdopodobnie przez wykonanie python setup.py install), site-packagesdomyślnie znajdziesz zainstalowane moduły .
Istnieją standardowe lokalizacje:
prefix/lib/pythonX.Y/site-packagesexec-prefix/lib/pythonX.Y/site-packagesprefix\Lib\site-packages1 Pure oznacza, że moduł używa tylko kodu Pythona. Nieoczyszczony może również zawierać kod C / C ++.
site-packagesjest domyślnie częścią ścieżki wyszukiwania Pythona , więc zainstalowane tam moduły mogą być później łatwo importowane.
lib64!
/usr/lib/python3.6?
Gdy używasz --useropcji z pip , pakiet zostanie zainstalowany w folderze użytkownika zamiast w folderze globalnym i nie będziesz musiał uruchamiać polecenia pip z uprawnieniami administratora.
Lokalizację folderu pakietów użytkownika można znaleźć za pomocą:
python -m site --user-site
Spowoduje to wydrukowanie czegoś takiego:
C:\Users\%USERNAME%\AppData\Roaming\Python\Python35\site-packages
Jeśli nie używasz --useropcji z pip , pakiet zostanie zainstalowany w folderze globalnym podanym przez:
python -c "import site; print(site.getsitepackages())"
Spowoduje to wydrukowanie czegoś takiego:
['C:\\Program Files\\Anaconda3', 'C:\\Program Files\\Anaconda3\\lib\\site-packages'
Uwaga: powyższe wydrukowane wartości dotyczą systemu Windows 10 z zainstalowanym programem Anaconda 4.x z ustawieniami domyślnymi.
site-packages to tylko lokalizacja, w której Python instaluje swoje moduły.
Nie trzeba go „znaleźć”, Python sam wie, gdzie go znaleźć, ta lokalizacja jest zawsze częścią PYTHONPATH (sys.path).
Programowo możesz to znaleźć w ten sposób:
import sys
site_packages = next(p for p in sys.path if 'site-packages' in p)
print site_packages
„/Users/foo/.envs/env1/lib/python2.7/site-packages”
site-packages, a to wzrośnie StopIteration. Na przykład Debian (i Ubuntu) muszą dist-packageszainstalować swoje rozproszone moduły.
/usr/local/lib/python3.6/site-packagesna ubuntu