Question Comment puis-je trouver l'emplacement de mon répertoire de sites-packages Python?


Comment puis-je trouver l'emplacement de mon répertoire de paquets de site?


647
2017-09-23 17:04


origine


Réponses:


Il existe deux types de répertoires de packages de sites, global et par utilisateur.

  1. Global paquets de site ("dist-packages") répertoires sont répertoriés dans sys.path lorsque vous exécutez:

    python -m site
    

    Pour une liste plus concise getsitepackages du module de site en code Python:

    python -c "import site; print(site.getsitepackages())"
    

    Remarque: Avec virtualenvs getsitepackages n'est pas disponible, sys.path d'en haut listera correctement le répertoire de paquets de site de virtualenv, cependant.

  2. le par utilisateur répertoire site-packages (PEP 370) est où Python installe vos paquets locaux:

    python -m site --user-site
    

    Si cela pointe vers un répertoire inexistant, vérifiez le statut de sortie de Python et voyez python -m site --help pour des explications.

    Allusion: Fonctionnement pip list --user ou pip freeze --user vous donne une liste de tous installés par utilisateur paquets de site.


149
2017-09-06 09:24



>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

(ou juste le premier article avec site.getsitepackages()[0])


601
2017-10-18 08:19



De "Comment installer Django" documentation (bien que cela soit utile pour plus que l'installation de Django) - exécutez ce qui suit à partir du shell:

python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())"

Formaté pour la lisibilité (plutôt que d'utiliser comme un seul revêtement), cela ressemble à ce qui suit:

from distutils.sysconfig import get_python_lib
print(get_python_lib())

288
2017-09-23 17:06



Pour Ubuntu,

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

...n'est pas correcte.

Cela vous indiquera /usr/lib/pythonX.X/dist-packages

Ce dossier contient uniquement les packages que votre système d'exploitation a installés automatiquement pour les programmes à exécuter.

Sur Ubuntu, le dossier site-packages qui contient les paquets installés via setup_tools \ easy_install \ pip sera en /usr/local/lib/pythonX.X/dist-packages

Le deuxième dossier est probablement le plus utile si le cas d'utilisation est lié à l'installation ou à la lecture du code source.

Si vous n'utilisez pas Ubuntu, vous êtes probablement sûr de copier-coller la première boîte de code dans le terminal.


97
2018-01-06 03:08



C'est ce qui a fonctionné pour moi:

python -m site --user-site

59
2018-05-22 00:08



Comme d'autres l'ont noté, distutils.sysconfig a les paramètres pertinents:

import distutils.sysconfig
print distutils.sysconfig.get_python_lib()

... bien que le défaut site.py fait quelque chose d'un peu plus brut, paraphrasé ci-dessous:

import sys, os
print os.sep.join([sys.prefix, 'lib', 'python' + sys.version[:3], 'site-packages'])

(il ajoute aussi ${sys.prefix}/lib/site-python et ajoute les deux chemins pour sys.exec_prefix De plus, cette constante devrait-elle être différente?

Cela dit, quel est le contexte? Vous ne devriez pas jouer avec votre site-packages directement; setuptools / distutils fonctionnera pour l'installation, et votre programme s'exécutera peut-être dans un virtualenv où votre chemin python est complètement local, donc il ne doit pas non plus supposer l'utilisation directe des paquets de site système.


21
2017-09-23 17:14



Disons que vous avez installé le paquet 'django'. importez-le et tapez dans dir (django). Il vous montrera, toutes les fonctions et attributs avec ce module. Tapez l'interpréteur python -

>>> import django
>>> dir(django)
['VERSION', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', 'get_version']
>>> print django.__path__
['/Library/Python/2.6/site-packages/django']

Vous pouvez faire la même chose si vous avez installé mercurial.

C'est pour Snow Leopard. Mais je pense que cela devrait aussi fonctionner en général.


19
2018-02-23 18:32



Toutes les réponses (ou: la même réponse répétée encore et encore) sont insuffisantes. Ce que vous voulez faire est ceci:

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

La dernière ligne vous montre le répertoire d'installation. Fonctionne sur Ubuntu, alors que les précédents ne le font pas. Ne me posez pas de questions sur les fenêtres ou autres dists, mais comme c'est exactement le même répertoire que easy_install utilise par défaut, c'est probablement correct partout où easy_install fonctionne (donc, partout, même les macs). S'amuser. Note: le code original a beaucoup de mots creux.


14
2018-02-06 02:40



Les paquets du système natif installés avec l'installation de Python dans les systèmes basés sur Debian peuvent être trouvés à:

/usr/lib/python2.7/dist-packages/

Dans OSX - /Library/Python/2.7/site-packages

en utilisant ce petit code:

from distutils.sysconfig import get_python_lib
print get_python_lib()

Cependant, la liste des paquets installés via pip peut être trouvé à:

/ usr / local / bin /

Ou on peut simplement écrire la commande suivante pour lister tous les chemins où se trouvent les paquets python.

>>> import site; site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']

Remarque: l'emplacement peut varier en fonction de votre système d'exploitation, comme dans 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']

14
2017-08-08 16:05



Remarque: La solution proposée (distutils.sysconfig.get_python_lib ()) ne fonctionne pas lorsqu'il existe plusieurs répertoires de packages de sites (comme recommandé par cet article). Il ne retournera que le répertoire principal des paquets de site. Hélas, je n'ai pas de meilleure solution non plus. Python ne semble pas garder trace des répertoires de paquets de sites, seulement les paquets qu'ils contiennent.


11
2017-11-10 22:49



Cela fonctionne pour moi. Il vous obtiendra à la fois les dossiers dist-packages et site-packages. Si le dossier n'est pas sur le chemin de Python, il ne sera pas vous fait beaucoup de bien quand même.

import sys; 
print [f for f in sys.path if f.endswith('packages')]

Sortie (installation d'Ubuntu):

['/home/username/.local/lib/python2.7/site-packages',
 '/usr/local/lib/python2.7/dist-packages',
 '/usr/lib/python2.7/dist-packages']

9
2018-03-30 16:01