Что такое каталог сайтов 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.