Современный способ stdlib использует модуль sysconfig
, доступный в версиях 2.7 и 3.2+. В настоящее время Python использует восемь путей ( документы ):
- stdlib : каталог, содержащий стандартные файлы библиотеки Python, не зависящие от платформы.
- platstdlib : каталог, содержащий стандартные файлы библиотеки Python, которые зависят от платформы.
- platlib : каталог для файлов, специфичных для сайта, для платформы.
- purelib : каталог для файлов, специфичных для сайта, не для платформы.
- include : каталог для не зависящих от платформы заголовочных файлов.
- platinclude : каталог для заголовочных файлов для платформы.
- scripts : каталог для файлов сценариев.
- data : каталог для файлов данных.
В большинстве случаев пользователи, находящие этот вопрос, будут заинтересованы в пути 'purelib' (в в некоторых случаях вас может заинтересовать и 'platlib'). В отличие от принятого в настоящее время ответа, этот метод не должен работать неправильно в зависимости от того, активирован ли у вас virtualenv.
На системном уровне (это Python 3.7.0 в Mac OS):
>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/usr/local/Cellar/python/3.7.0/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages'
С помощью venv вы получите что-то вроде этого
>>> import sysconfig
>>> sysconfig.get_paths()['purelib']
'/private/tmp/.venv/lib/python3.7/site-packages'
Также доступен сценарий оболочки для отображения этих деталей, которые вы можете вызвать, выполнив sysconfig
как модуль:
python -m sysconfig
Примечание: sysconfig
( источник ) не следует путать с упомянутым подмодулем distutils.sysconfig
( источник ) в нескольких других ответах здесь. Это совершенно другой модуль, и в нем отсутствует функция get_paths
, описанная выше.