Что такое каталог сайтов python-пакетов?

Каталог site-packages упоминается в различных статьях, связанных с Python. Что это? Как это использовать?

Ответы

Ответ 1

  • site-packages - это целевой каталог пакетов Python, созданных вручную. Когда вы собираете и устанавливаете пакеты Python из исходного кода (используя distutils, возможно, выполняя python setup.py install), вы обнаружите установленные модули в site-packages по умолчанию.

  • Есть стандартные локации:

Unix (чистый): prefix/lib/pythonX.Y/site-packages

Unix (не чистый): exec-prefix/lib/pythonX.Y/site-packages

Windows: prefix\Lib\site-packages

(чистый означает, что модуль использует только код Python. Не чистый также может содержать код c/c++)

  • site-packages по умолчанию является частью пути поиска python, поэтому установленные там модули могут быть легко импортированы впоследствии.

  • Очень полезная статья: https://docs.python.org/2/install/

Ответ 2

site-packages - это просто место, где Python устанавливает свои модули.

Не нужно "находить это", python знает, где его найти, это местоположение всегда части PYTHONPATH (sys.path).

Программно вы можете найти его следующим образом:

import sys
site_packages = next(p for p in sys.path if 'site-packages' in p)
print site_packages

'/Users/Foo/.envs/ENV1/Library/python2.7/сайт-пакеты'

Ответ 3

Когда вы используете --user с pip, пакет устанавливается в папку пользователя вместо глобальной папки, и вам не нужно будет запускать команду pip с правами администратора.

Расположение папки пользовательских пакетов можно найти с помощью:

python -m site --user-site

Это напечатает что-то вроде:

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

Когда вы не используете --user с pip, пакет устанавливается в глобальную папку, заданную следующим образом:

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

Это напечатает что-то вроде:

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

Примечание. Вышеуказанные значения относятся к Windows 10 с установленной по умолчанию Anaconda 4.x.