【问题标题】:Is .NET Core or .NET 5.0 supported by PythonnetPythonnet 支持 .NET Core 还是 .NET 5.0
【发布时间】:2021-03-24 17:00:09
【问题描述】:

我使用 Pythonnet 已经有一段时间了,但总是反对 .NET Framework 4。* 在最近发布的 .NET 5.0 中,我想迁移我的项目,但我无法使其适用于非框架版本(例如 .NET Core 2.0、.NET Core 3.0、.NET 5.0)

这是我使用 .NET Framework 4.5 运行的一个非常简单的测试:

namespace TestNet
{
    public class Dummy
    {
        private string _name;

        public Dummy(string name)
        {
            _name = name;
        }

        public string Hello(string name)
        {
            return $"Hello {name}, my name is {_name}";
        }
    }
}

这会生成 TestNet.dll,然后我运行以下 Python 代码:

>>> import clr
>>> clr.AddReference("TestNet")
<System.Reflection.RuntimeAssembly object at 0x000001899ACFABB0>
>>> from TestNet import Dummy
>>> d = Dummy("Bob")
>>> d.Hello("John")
'Hello John, my name is Bob'

所以一切正常。

现在,完全相同但针对 .NET Core 或 .NET 5.0 的 C# 代码将为我提供:

>>> import clr
>>> clr.AddReference("TestNet")
<System.Reflection.RuntimeAssembly object at 0x00000122AF0DABB0>
>>> from TestNet import Dummy
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'TestNet'

我的理解是他们使用的是 CoreClr 而不是 CLR,并且来自 Pythonnet 网站 (https://pythonnet.github.io/):

Python.NET (pythonnet) 是一个包,它使 Python 程序员几乎可以与 .NET 4.0+ 公共语言运行时 (CLR) 无缝集成

有人知道是否支持 CoreClr 吗?

谢谢!

环境:Python 3.8/Windows 10

【问题讨论】:

  • github.com/pythonnet/pythonnet/issues/857,您的 .NET Core 方案目前仍在进行中
  • @Martheen 感谢您的快速回复。你知道第一个测试版的时间表吗?
  • 它仍在进行中github.com/pythonnet/pythonnet/pull/1322,甚至开发人员都没有发布时间表
  • @Martheen,这是否意味着 pythonnet 在 Linux 上不可用? IE。它只支持Windows版本的.NET Framework,对吗?
  • @Corvin 嗯,它确实支持 Mono,在 Linux 上可用

标签: python c# .net python.net coreclr


【解决方案1】:

Python.NET 已添加对 .NET 5 的支持,但尚未发布。

查看示例

Pythonnet dotnet core 'No module named'

【讨论】:

    猜你喜欢
    • 2021-11-06
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 2020-01-24
    • 2017-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多