Любой virtualenv с --system-site-packages
или без него дает мне:
% python -c 'import site; site.getsitepackages()'
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
Да, один из самых уродливых аспектов реализации virtualenv заключается в том, что у него должна быть собственная копия модуля сайта, который используется для всех virtualenv независимо от того, с какой версией Python они созданы. И эта копия предшествовала добавлению site.getsitepackages()
(я полагаю, впервые добавлена в Python 2.7).
Я бы не возражал против запроса на включение этой функции в модуль сайта virtualenv, если реализация может работать на всех поддерживаемых virtualenv версиях Python (от 2.4 до 3.3a). Или, если это слишком сложно из-за отсутствия API-интерфейсов в других областях более ранних версий Python, возможно, определите его условно в зависимости от sys.version
или чего-то еще.
дубликат # 355
закрывается как дубликат к # 355, так как он более общий.
есть эта проблема с Python 3.6.5
>> python --version && python -c "import site; print(site.getsitepackages())"
Python 3.6.5
Traceback (most recent call last):
File "<string>", line 1, in <module>
AttributeError: module 'site' has no attribute 'getsitepackages'
не дубликат № 355
Самый полезный комментарий
Да, один из самых уродливых аспектов реализации virtualenv заключается в том, что у него должна быть собственная копия модуля сайта, который используется для всех virtualenv независимо от того, с какой версией Python они созданы. И эта копия предшествовала добавлению
site.getsitepackages()
(я полагаю, впервые добавлена в Python 2.7).Я бы не возражал против запроса на включение этой функции в модуль сайта virtualenv, если реализация может работать на всех поддерживаемых virtualenv версиях Python (от 2.4 до 3.3a). Или, если это слишком сложно из-за отсутствия API-интерфейсов в других областях более ранних версий Python, возможно, определите его условно в зависимости от
sys.version
или чего-то еще.