O que é o diretório de pacotes de sites do python?


119

O diretório site-packagesé mencionado em vários artigos relacionados ao Python. O que é isso? Como usá-lo?

Respostas:


72

site-packagesé o diretório de destino dos pacotes Python criados manualmente. Quando você constrói e instala pacotes Python a partir do código-fonte (usando distutils , provavelmente executando python setup.py install), você encontrará os módulos instalados site-packagespor padrão.

Existem locais padrão:

  • Unix (puro) 1 :prefix/lib/pythonX.Y/site-packages
  • Unix (não puro): exec-prefix/lib/pythonX.Y/site-packages
  • Janelas: prefix\Lib\site-packages

1 Pure significa que o módulo usa apenas código Python. Não puro pode conter código C / C ++ também.

site-packagesé, por padrão, parte do caminho de pesquisa do Python , então os módulos instalados nele podem ser importados facilmente depois.


Leitura útil


10
local aconteceu de ser /usr/local/lib/python3.6/site-packagesno ubuntu
mehmet

Eu vi sistemas Gentoo com ele lib64!
MultipleMonomials de

2
o conda ou pip instala em pacotes de sites ou apenas em pacotes construídos manualmente?
Monica Heddneck

2
A pergunta realmente interessante é: Por que este diretório? Por que não instalar apenas no /usr/lib/python3.6?
Torsten Bronger

40

Quando você usa a --useropção com pip , o pacote é instalado na pasta do usuário em vez da pasta global e você não precisa executar o comando pip com privilégios de administrador.

A localização da pasta de pacotes do usuário pode ser encontrada usando:

python -m site --user-site

Isso imprimirá algo como:

C:\Users\%USERNAME%\AppData\Roaming\Python\Python35\site-packages

Quando você não usa a --useropção com pip , o pacote é instalado na pasta global fornecida por:

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

Isso imprimirá algo como:

['C:\\Program Files\\Anaconda3', 'C:\\Program Files\\Anaconda3\\lib\\site-packages'

Nota: Os valores impressos acima são para Windows 10 com Anaconda 4.x instalado com padrões.


24

site-packages é apenas o local onde o Python instala seus módulos.

Não há necessidade de "encontrar", o python sabe onde encontrá-lo por si só, este local é sempre parte do PYTHONPATH (sys.path).

Programaticamente, você pode encontrá-lo desta forma:

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'


3
Provavelmente mais fácil de importar o site do que site.getsitepackages ()
JSharm

1
Nem todas as distribuições Python têm site-packages, e isso vai aumentar StopIteration. Por exemplo, Debian (e Ubuntu) dist-packagesdeve instalar seus módulos distribuídos.
Mike T

Se você usar o virtualenv e não herdar pacotes globais, isso sempre funcionará. Eu nunca codifico sem um virtualenv
Anthony Perot
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.