O diretório site-packages
é mencionado em vários artigos relacionados ao Python. O que é isso? Como usá-lo?
O diretório site-packages
é mencionado em vários artigos relacionados ao Python. O que é isso? Como usá-lo?
Respostas:
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-packages
por padrão.
Existem locais padrão:
prefix/lib/pythonX.Y/site-packages
exec-prefix/lib/pythonX.Y/site-packages
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.
lib64
!
/usr/lib/python3.6
?
Quando você usa a --user
opçã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 --user
opçã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.
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'
site-packages
, e isso vai aumentar StopIteration
. Por exemplo, Debian (e Ubuntu) dist-packages
deve instalar seus módulos distribuídos.
/usr/local/lib/python3.6/site-packages
no ubuntu