Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 1683|Ответ: 4

[Источник] .NET/C# вызывает среду Python для выполнения .py скриптов

[Скопировать ссылку]
Опубликовано 2025-2-11 16:01:21 | | | |
Требования: Программирование на Python сейчас очень популярно, широко используется в анализе данных и научных исследованиях, крупных моделях, глубоком обучении и т.д., некоторые модельные алгоритмы написаны на Python, им нужно использовать .NET для выполнения скриптов на Python, передачи параметров и получения результатов. Онлайн-решения: выполнение процессов, IronPython, pythonnet и, наконец, pythonnet.

pythonnet-Python.NET

Python.NET — это программный пакет, который позволяет программистам на Python практически бесшовно интегрировать .NET Universal Language Runtime (CLR) и предоставляет разработчикам .NET мощные инструменты для скриптов приложений. Он позволяет коду на Python взаимодействовать с CLR, а также может использоваться для встраивания Python в .NET-приложения.

Адрес:Вход по гиперссылке виден.

Подготовьте среду Python

В этой статье используется python-3.13.2-embed-amd64 в качестве рабочей среды, ссылка:

Python-embed-пакеты устанавливают пакеты с помощью pip
https://www.itsvse.com/thread-10941-1-1.html

Загрузка 64-битного пакета Python-3.13.2:Вход по гиперссылке виден.

Создайте новую консоль .NET 8

Создайте новую консольную ссылку .NET 8 с следующей ссылкой:

Поскольку pythonnet будет использоватьBinaryFormatterкласса, при выполнении будет выполнено следующее исключение:

Необработанное исключение. System.NotSupportedException: Сериализация и десериализация BinaryFormatter отключены в этом приложении. ВидетьВход по гиперссылке виден.для получения дополнительной информации.

Чтобы решить проблему, отредактировать узел .csproj <PropertyGroup> и добавить следующую конфигурацию:

Полная конфигурация выглядит следующим образом:

Py.GIL() — важная функция в библиотеке Python.NET для получения и освобождения глобальных интерпретаторных блокировок (GIL). GIL — это механизм в интерпретаторе CPython, который гарантирует, что только один поток одновременно выполняет байткод Python. Это важно в многопотоковой среде, особенно если Python и .NET смешаны вместе.

Float-тип Python на самом деле является float двойной точности (64 бита), соответствующий двойному типу C#.

Выполнять код на Python напрямую

Для простого Python-кода, который можно выполнять напрямую, код выглядит следующим образом:



Вызов функции python

Код таков:



Развернуть в среду Linux для тестирования

Доступны для нормальной эксплуатации тесты следующие:



Ссылка:
Вход по гиперссылке виден.
Вход по гиперссылке виден.
Вход по гиперссылке виден.




Предыдущий:Linux использует pyenv для установки среды Python
Следующий:Плагин помощи в разработке кода серии Angular 18 (Thirty One) против
 Хозяин| Опубликовано 2025-2-11 16:08:17 |
Вызовите python-функцию с массивом списка (<класс 'list'>) в качестве аргумента


Код таков:


 Хозяин| Опубликовано 2025-2-11 16:25:40 |
C# вызывает функцию python, чтобы получить возвращаемое значение <класс 'tuple'>

Код таков:



 Хозяин| Опубликовано 24.02.2025 09:27:40 |
CSnakes- Инструмент для встраивания кода на Python в .NET-проекты

Источник:Вход по гиперссылке виден.
Документация:Вход по гиперссылке виден.
 Хозяин| Опубликовано 2025-9-1 16:01:12 |
Компиляция в выполнение байткода

Ссылка:Вход по гиперссылке виден.
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com