Доступ к .net core dll с помощью python

Мне нужно получить доступ к dll С#, встроенному в ядро ​​.net (версия .NETCore = v1.1). Я пробовал следующим образом, но получаю ошибку импорта.

import clr

clr.AddReference("dllname") - No error

from dllname import *

Получил исключение «Ошибка импорта», в котором говорится, что нет модуля с именем имя_dll.

Примечание. Я пробовал как в Iron python, так и в python, и оба они дают мне одно и то же исключение.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
2 400
2

Ответы 2

Я пытаюсь использовать Fedora 29, используя mono 5.18, python3.7 и netcore 3.0.100-preview-009812, и, кажется, работает, если вы используете абсолютные пути для разрешения сетевой DLL

import clr
import os

clr.AddReference(os.path.abspath('./bin/Debug/netstandard2.0/sample.dll'))
import sample
p = sample.Person(name='Peter')

проект netcore был сгенерирован так

dotnet new classlib -o sample

Класс человека

using System;

namespace sample
{
    public class Person
    {
            public string Name { get; set; }
    }
}

ОБНОВИТЬ

Основываясь на данных, предоставленных @SMHP, похоже, что несовместимость между основной платформой .NET/mono (среда выполнения pythonnet) и библиотекой, предназначенной для .netcoreapp 2.0.

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

SMHP 19.03.2019 15:41

просто чтобы получить больше информации. В какой операционной системе вы пытаетесь? и какая версия питона? Можете ли вы попробовать предыдущий минимальный образец?

jgoday 19.03.2019 15:53

Я только что попробовал в Windows 10 с python2.7 и netcore 2.2, все работает отлично. Можете ли вы дать больше информации о dll, которую вы пытаетесь загрузить? возможно ли, что существует какой-то конфликт между другим модулем Python с тем же именем?

jgoday 19.03.2019 22:00

я установил pythonnet 2.3.0 для доступа к .net dll, также установил .net core sdk версии 2.2.105. я подтвердил, что в имени этой dll нет существующего модуля python. я получил эту dll от другой команды, я полагаю его встроенный 64-битный компьютер.

SMHP 20.03.2019 03:16

// xxxx, Version=1.1.0.0, Culture=neutral, PublicKeyToken=null // Глобальный тип: <Module> // Архитектура: AnyCPU (предпочтительно 64-разрядная) // Время выполнения: .NET 4.0 [сборка: CompilationRelaxations(8) ] [сборка: RuntimeCompatibility(WrapNonExceptionThrows = true)] [сборка: TargetFramework(".NETCoreApp,Version=v2.1", FrameworkDisplayName = "")]

SMHP 20.03.2019 03:33

Вы получаете ошибку импорта, потому что используете имя dll в операторе импорта. Вместо использования dllname используйте пространство имен dll. PS: не используйте одно и то же имя для dll и пространства имен, это приведет к ошибке при импорте в python

import clr

clr.AddReference("dllname") - No error

from namespace import *

Другие вопросы по теме