Visual Studio Python Environment — что они скрывают и где это?

Я использую VS 2017 и установил pythonnet. Я создал проект VS "Приложение Python". У меня есть другой код (C# .NET), к которому я хотел бы получить доступ из этого нового приложения Python.

Я должен иметь возможность: импортировать clr

Однако в VS 2017 все работает нормально. Я точно знаю, что это работает, поскольку не только импортируется CLR, но и я запускаю код .Net (могу видеть выходные данные консоли). Проблема, с которой я сталкиваюсь, заключается в том, что я не работаю в VS 2017. Цель этого приложения Python — продемонстрировать коллегам по кодированию Python, как запускать библиотеки DLL .Net. У указанных кодеров НЕТ Visual Studio, поэтому магия «VS Environment», которая происходит, должна выполняться вручную (когда они устанавливают библиотеки .Net).

Если я запускаю непосредственно из cmd или использую что-то еще (например, notepadd ++), я получаю ModuleNotFoundError: нет модуля с именем «clr»

Где VS скрывает clr.pyd и Python.Runtime.dll? Насколько я понимаю, эти файлы должны быть в каталоге запуска, но я их там не вижу. Как уже отмечалось, все отлично работает в VS, поэтому кажется, что VS откуда-то загружает эти модули для меня.


person N_tro_P    schedule 06.06.2018    source источник
comment
Что происходит, когда вы print(clr)? Как выглядит sys.path? Вы уверены, что это CPython, а не, скажем, IronPython?   -  person AKX    schedule 07.06.2018
comment
как вы установили pythonnet? после import clr вы можете проверить его местоположение под clr.__file__. ``` ››› import clr ››› clr.__file__ 'C:\\Python\\Python36-64\\lib\\site-packages\\clr.pyd' ```   -  person denfromufa    schedule 07.06.2018
comment
@AKX, если я печатаю (clr), я получаю NameError: имя «clr» не определено   -  person N_tro_P    schedule 07.06.2018
comment
@denfromufa Я не уверен, как это будет работать, поскольку import clr завершается с ошибкой и возвращает ModuleNotFoundError. Приложение существует, поэтому нет возможности добраться до строки после импорта clr.   -  person N_tro_P    schedule 07.06.2018
comment
Я не мог вспомнить, как я установил pythonnet, поэтому я копался в своей системе. Нет установщика, но у меня есть все решение pythonnet с другой системой. Возможно, без установки, но это буквально только эти 2 файла (clr.pyd и Python.Runtime.dll). Тем не менее, мой вопрос в силе. Как VS это делает? Файлы не существуют в каталоге выполнения. Нет, это НЕ IronPython. Это особый проект, который нужно использовать. Это стандартное приложение Python. НЕ Python, встроенный в .Net.   -  person N_tro_P    schedule 07.06.2018
comment
@N_tro_P взгляните на это для инструкций по установке pythonnet: stackoverflow.com/questions/14633695/   -  person denfromufa    schedule 07.06.2018
comment
Спасибо @denfromufa, но это все еще не помогает узнать, что делает VS? Не зная, кажется, что VS для Python IDE бесполезен.   -  person N_tro_P    schedule 08.06.2018
comment
Без полного воспроизводимого примера мы мало что можем сказать   -  person denfromufa    schedule 08.06.2018
comment
@denfromufa не сложно воспроизвести, просто создайте новое приложение Python (в VS 2017), выполните импорт CLR, а затем запустите из VS. Увидите, что это работает. Затем запустите из cmd. Смотрите, что это не работает. Код представляет собой буквально одну строку import clr, которая находится в OP.   -  person N_tro_P    schedule 08.06.2018
comment
@N_tro_P, можете ли вы проверить clr.__file__ и поделиться своим решением VS?   -  person denfromufa    schedule 08.06.2018
comment
Путь: C:\Users\‹MyUserName›\AppData\Local\Programs\Python\Python35-32\lib\site-packages\clr.pyd. Я не могу поделиться решением из-за блокировок компании на сайтах общего доступа. Так что это отвечает ГДЕ это, но это все еще не имеет смысла. VS должен где-то привязывать это место к пути, и я хочу иметь возможность сделать это вручную (без VS)   -  person N_tro_P    schedule 08.06.2018
comment
вы, вероятно, запускаете 2 разные установки Python в VS и за его пределами. Это расположение для clr.pyd установлено по умолчанию и должно быть расположено во время импорта без ручной регистрации пути.   -  person denfromufa    schedule 11.06.2018
comment
@denfromufa да, я знаю это. Таким образом, мой вопрос. Я хочу знать, что делает VS при создании среды. Явно что-то дополнительно делается в среде VS, но я не понимаю, что это такое.   -  person N_tro_P    schedule 12.06.2018