Почему нет выхода для сайта python -m под virtualenv? - PullRequest
0 голосов
/ 26 февраля 2012

У меня возникли проблемы с отслеживанием этого.Когда я выполняю 'python -m site', когда я не нахожусь под virtualenv, я получаю хороший вывод со списком моих каталогов sys.path и другими вещами.Когда я переключаюсь на virtualenv, нет выхода.Я кратко рассмотрел код в https://github.com/pypa/virtualenv/blob/develop/virtualenv.py и вижу, что virtualenv создает свой собственный site.py - но этот модуль все еще имеет хук __main__, и когда я импортирую его из интерпретатора и вызываю все, что get выполняется в if __name__ == '__main__' это работает.Какая разница, когда я пытаюсь выполнить его через переключатель -m?

1 Ответ

0 голосов
/ 26 февраля 2012

Меня несколько заинтересовал этот вопрос.Поэтому я сделал несколько взломов.

Во-первых, я изменил site.py в каталоге библиотеки Python, вставив строку print(__name__).Результат был

$ python -m site
site

Затем я добавил файл mymodule.py в папку библиотеки с одной строкой print(__name__).Теперь результат был

$ python -m mymodule
site
__main__

Таким образом, кажется, что модуль site импортируется до того, как команда python -m site запустит этот модуль как скрипт.Когда он снова импортируется для выполнения скрипта, python пропускает вторичный импорт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...