Jak mogę znaleźć lokalizację mojej witryny Python-katalogu pakietów?
Jak znaleźć lokalizację mojej witryny-katalogu pakietów?
17 answers
Istnieją dwa rodzaje katalogów pakietów witryn, global i na użytkownika.
-
Global site-packages ("dist-packages") katalogi są wyświetlane w
sys.path
po uruchomieniu:python -m site
Dla bardziej zwięzłej listy Uruchom
getsitepackages
z modułu strony w kodzie Pythona:python -c "import site; print(site.getsitepackages())"
uwaga: z virtualenvs getsitepackages nie jest dostępny,
sys.path
z góry wyświetli się lista virtualenv ' s site-packages / align = "left" / -
Na użytkownika katalog site-packages (PEP 370 ) jest miejscem, w którym Python instaluje Twoje lokalne Pakiety:
python -m site --user-site
Jeśli to wskazuje na nieistniejący katalog sprawdź status zakończenia Pythona i zobacz
python -m site --help
dla wyjaśnienia.podpowiedź: uruchamianie
pip list --user
lubpip freeze --user
daje listę wszystkich zainstalowanych na użytkownika pakietów witryny.
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
2018-04-20 22:27:35
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
(lub po prostu pierwszy element z site.getsitepackages()[0]
)
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-08-29 13:50:18
Z "Jak zainstalować Django" dokumentacja (choć jest to przydatne nie tylko do instalacji Django) - wykonaj następujące czynności z powłoki:
python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"
Sformatowany pod kątem czytelności (a nie jako jednolinijkowy), który wygląda następująco:
from distutils.sysconfig import get_python_lib
print(get_python_lib())
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
2012-01-26 05:26:36
Dla Ubuntu ,
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
...nie jest poprawne.
Wskaże ci /usr/lib/pythonX.X/dist-packages
Ten folder zawiera tylko pakiety, które Twój system operacyjny zainstalował automatycznie, aby uruchamiać programy.
w systemie ubuntu folder site-packages zawierający pakiety zainstalowane przez setup_tools\easy_install \ pip będzie znajdować się w /usr/local/lib/pythonX.X/dist-packages
Drugi folder jest prawdopodobnie bardziej przydatny, jeśli przypadek użycia jest związany z instalacją lub odczytem źródła kod.
Jeśli nie używasz Ubuntu, prawdopodobnie możesz bezpiecznie skopiować pierwsze pole kodu do terminala.
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
2011-01-06 03:08:09
To mi się udało:
python -m site --user-site
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
2012-05-22 04:34:22
Jak zauważyli inni, distutils.sysconfig
ma odpowiednie ustawienia:
import distutils.sysconfig
print distutils.sysconfig.get_python_lib()
...chociaż domyślne site.py
robi coś nieco bardziej prymitywnego, parafrazując poniżej:
import sys, os
print os.sep.join([sys.prefix, 'lib', 'python' + sys.version[:3], 'site-packages'])
(dodaje również ${sys.prefix}/lib/site-python
i dodaje obie ścieżki dla sys.exec_prefix
, jeśli ta stała będzie inna).
To powiedziane, jaki jest kontekst? Nie powinieneś mieszać bezpośrednio ze swoją site-packages
; setuptools / distutils będzie działać do instalacji, a twój program może działać w virtualenv, gdzie twój pythonpath jest całkowicie user-local, więc nie powinno też zakładać bezpośredniego korzystania z systemowych pakietów site-packages.
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
2008-09-23 17:14:02
Załóżmy, że zainstalowałeś pakiet 'django'. zaimportuj go i wpisz w katalogu (django). Pokaże Ci wszystkie funkcje i atrybuty tego modułu. Wpisz interpreter Pythona -
>>> import django
>>> dir(django)
['VERSION', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'get_version']
>>> print django.__path__
['/Library/Python/2.6/site-packages/django']
Możesz zrobić to samo, jeśli masz zainstalowany mercurial.
To dla Snow Leoparda. Ale myślę, że to powinno działać w ogóle, jak również.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
2012-03-30 16:36:55
Natywne pakiety systemowe zainstalowane z instalacją Pythona w systemach opartych na Debianie można znaleźć pod adresem :
/usr / lib / python2. 7 / dist-packages /
W OSX- /Library/Python/2.7/site-packages
Używając tego małego kodu:
from distutils.sysconfig import get_python_lib
print get_python_lib()
Lista pakietów zainstalowanych przez pip
znajduje się pod adresem:
/usr / local / bin /
Można też po prostu napisać następujące polecenie, aby wyświetlić listę wszystkich ścieżek, w których znajdują się Pakiety Pythona.
>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
Uwaga: lokalizacja może się różnić w zależności od systemu operacyjnego, jak w OSX
>>> import site; site.getsitepackages()
['/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/site-python', '/Library/Python/2.7/site-packages']
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
2018-03-23 05:37:59
Wszystkie odpowiedzi (lub: ta sama odpowiedź powtarzana w kółko) są niewystarczające. To co chcesz zrobić to:
from setuptools.command.easy_install import easy_install
class easy_install_default(easy_install):
""" class easy_install had problems with the fist parameter not being
an instance of Distribution, even though it was. This is due to
some import-related mess.
"""
def __init__(self):
from distutils.dist import Distribution
dist = Distribution()
self.distribution = dist
self.initialize_options()
self._dry_run = None
self.verbose = dist.verbose
self.force = None
self.help = 0
self.finalized = 0
e = easy_install_default()
import distutils.errors
try:
e.finalize_options()
except distutils.errors.DistutilsError:
pass
print e.install_dir
Ostatnia linia pokazuje katalog instalacji. Działa na Ubuntu, podczas gdy powyższe Nie. Nie pytaj mnie O windows lub inne dists, ale ponieważ jest to dokładnie ten sam katalog, którego domyślnie używa easy_install, prawdopodobnie jest poprawny wszędzie tam, gdzie działa easy_install(więc wszędzie, nawet Mac). Baw się dobrze. Uwaga: oryginalny kod zawiera wiele przekleństw.
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
2012-02-06 02:40:22
Uwaga na marginesie: proponowane rozwiązanie (distutils.sysconfig.get_python_lib()
) nie działa, gdy istnieje więcej niż jeden katalog site-packages (zgodnie z zalecanym przez ten artykuł ). Zwróci tylko główny katalog stron-packages.
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
2018-10-04 06:30:52
To mi pasuje. Otrzymasz zarówno foldery dist-packages, jak i site-packages. Jeśli folder nie znajduje się na ścieżce Pythona, nie będzie i tak dobrze ci to robi.
import sys;
print [f for f in sys.path if f.endswith('packages')]
Wyjście (instalacja Ubuntu):
['/home/username/.local/lib/python2.7/site-packages',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages']
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
2012-03-30 16:36:22
Dodatkowa uwaga do wspomnianej już funkcji get_python_lib
: Na niektórych platformach używane są różne katalogi dla modułów specyficznych dla platformy (np. Moduły wymagające kompilacji). Jeśli przejdziesz plat_specific=True
do funkcji, otrzymasz Pakiety witryny dla konkretnych pakietów platformy.
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
2008-09-23 17:16:22
from distutils.sysconfig import get_python_lib
print get_python_lib()
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
2008-09-23 17:09:54
Powinno to działać na wszystkich dystrybucjach w środowisku wirtualnym i poza nim ze względu na jego" low-tech " charakter. Moduł systemu operacyjnego zawsze znajduje się w katalogu nadrzędnym 'site-packages'
import os; print(os.path.dirname(os.__file__) + '/site-packages')
Aby zmienić katalog do katalogu site-packages używam następującego aliasu (na systemach *nix):
alias cdsp='cd $(python -c "import os; print(os.path.dirname(os.__file__))"); cd site-packages'
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
2017-06-02 07:32:10
Odpowiedź na Stare pytanie. Ale użyj do tego ipythona.
pip install ipython
ipython
import imaplib
imaplib?
To da następujące wyjście O pakiecie imaplib -
Type: module
String form: <module 'imaplib' from '/usr/lib/python2.7/imaplib.py'>
File: /usr/lib/python2.7/imaplib.py
Docstring:
IMAP4 client.
Based on RFC 2060.
Public class: IMAP4
Public variable: Debug
Public functions: Internaldate2tuple
Int2AP
ParseFlags
Time2Internaldate
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-07-18 09:12:47
Nowoczesny sposób stdlib jest za pomocą sysconfig
Moduł dostępny w wersji 2.7 i 3.2+. Python obecnie używa osiem ścieżek ( docs):
- stdlib : katalog zawierający standardowe pliki biblioteki Pythona, które nie są specyficzne dla platformy.
- platstdlib: katalog zawierający standardowe pliki biblioteki Pythona, które są specyficzne dla platformy.
- platlib : katalog dla site-specific, pliki specyficzne dla platformy.
- purelib : katalog dla plików specyficznych dla witryny, nie związanych z platformą.
- include : katalog dla plików nagłówkowych innych niż platformy.
- platinclude : katalog dla plików nagłówkowych specyficznych dla platformy.
- scripts : katalog plików skryptów.
- data : katalog plików z danymi.
W większości przypadków użytkownicy znajdujący to pytanie będą interesuje Cię ścieżka 'purelib' (w w niektórych przypadkach , może zainteresować Cię również 'platlib'). W przeciwieństwie do aktualnie akceptowanej odpowiedzi, metoda ta nie powinna źle się zachowywać w zależności od tego, czy masz aktywowany virtualenv.
Na poziomie systemu (jest to Python 3.7.0 na mac OS):
>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'
Z venv, dostaniesz coś takiego
>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/private/tmp/.venv/lib/python3.7/site-packages'
Skrypt powłoki jest również dostępny do wyświetlania tych szczegółów, które można wywołać wykonując sysconfig
jako moduł:
python -m sysconfig
Uwaga: sysconfig
(źródło) nie należy mylić z podmodułem distutils.sysconfig
(źródło ) wspomnianym w kilku innych odpowiedziach tutaj. Jest to zupełnie inny moduł i brakuje w nim funkcji get_paths
omówionej powyżej.
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
2018-10-10 17:30:24
Musiałem zrobić coś nieco innego dla projektu, nad którym pracowałem: znaleźć relative katalog site-packages w stosunku do podstawowego prefiksu instalacyjnego. Jeśli folder site-packages znajdował się w /usr/lib/python2.7/site-packages
, chciałem użyć /lib/python2.7/site-packages
. W rzeczywistości natknąłem się na systemy, w których site-packages
było w /usr/lib64
, A przyjęta odpowiedź nie zadziałała na tych systemach.
Podobnie jak odpowiedź cheatera, moje rozwiązanie zagląda głęboko w wnętrzności Distutils, aby znaleźć ścieżkę, która faktycznie przechodzi around inside setup.py
. To było takie bolesne, że nie chcę, żeby ktoś musiał to znowu rozgryźć.
import sys
import os
from distutils.command.install import INSTALL_SCHEMES
if os.name == 'nt':
scheme_key = 'nt'
else:
scheme_key = 'unix_prefix'
print(INSTALL_SCHEMES[scheme_key]['purelib'].replace('$py_version_short', (str.split(sys.version))[0][0:3]).replace('$base', ''))
, które powinny wydrukować coś w rodzaju /Lib/site-packages
lub /lib/python3.6/site-packages
.
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
2017-12-16 09:49:25