如何在 Windows 10 和 Python 3.8 上安装适用于 C# (VS2019) 的 Python.NET?

2023-12-08

Python.NET的官方网站上说支持Python 3.8。伟大的。 现在我有兴趣从用 C# (.NET Framework v4.7.2) 开发的应用程序调用现有的 python 3.8 模块。

EDITS:

由于 Python.NET 的作者几乎没有为 C# 调用提供任何安装说明,因此我按照给出的说明进行操作here。 请注意,我使用的是 miniconda3 和 python 32位(我的项目需要后者),所以我执行了以下操作:

  1. 我从 VScode 安装了 pythonnetpip install以及所有必需的 python 包(让我们使用numpy此处用于示例)在“C:\ProgramData\Miniconda3\envs\py38_32”环境下。

  2. 在C#中设置环境路径(在VS2019中):

    string pythonPath1 = @"C:\ProgramData\Miniconda3\envs\py38_32";
    string pythonPath2 = @"C:\ProgramData\Miniconda3\envs\py38_32\Lib\site-packages";
    Environment.SetEnvironmentVariable("PATH", pythonPath1, EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PYTHONHOME", pythonPath1, EnvironmentVariableTarget.Process);
    Environment.SetEnvironmentVariable("PYTHONPATH", pythonPath2, EnvironmentVariableTarget.Process);
  1. 从我的项目中的“py38_32\Lib\site-packages”文件夹引用了Python.Runtime.dll并添加using Python.Runtime;

  2. 尝试导入 numpy:

    using (Py.GIL())
    {
        dynamic np = Py.Import("numpy"); //fail on this line with ImportError
    }
    

numpy 导入失败,出现“Python.Runtime.PythonException: 'ImportError”。它还说“Python版本是:来自“\bin\Debug\MyProject.exe”的Python3.8......看起来它在我的调试文件夹中查找python,而不是在上面提到的路径中......也许...... .并且使用相同的环境从 VScode 导入 numpy 工作得很好。

有人知道这里发生了什么事吗?


安装Python.NET的官方方法是通过Python包管理器pip.

在 Windows 上,那就是python.exe -m pip install pythonnet。这将创造Python.Runtime.dll在你的 Python 发行版中的某个地方。只需从您的项目中引用它,并确保架构匹配。

不受支持的替代方案是使用我的非官方构建,并设置Runtime.PythonDLL到的位置python38.dll您选择的(您可以在运行时使用另一个 NuGet 包找到一个:哪个Python).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Windows 10 和 Python 3.8 上安装适用于 C# (VS2019) 的 Python.NET? 的相关文章

随机推荐

  • 什么是对象/关系不匹配

    我是java新手 正在阅读有关对象关系映射的内容 我在此链接上发现了术语 对象 关系不匹配 休眠 谁能用 Java 解释一下什么是对象 关系不匹配 我也读到过黑客攻击网站但无法正确获得它 用示例进行解释将是值得赞赏的 Hibernate 是
  • Heroku 应用程序坚持使用 HTTPS - 为什么?

    我有一个有趣的小问题 Heroku 上的一个应用程序被配置为使用Heroku SSL 测试版 但无论我做什么 它似乎都想使用 HTTPS 浏览器错误 I have redirect to protocol gt http status gt
  • 如何使用 oozie 安排 sqoop 操作

    我是 Oozie 的新手 只是想知道 如何使用 Oozie 安排 sqoop 作业 我知道 sqoop 操作可以添加为 Oozie 工作流程的一部分 但是我如何安排 sqoop 操作并让它每隔 2 分钟或每天晚上 8 点自动运行一次 只是一
  • JDBC-JTDS 错误?对于日期和时间 (x) 类型的列

    当我尝试从中获取列类型时ResultSetMetaData用方法getColumnTypeName对于类型date and time x 我越来越nvarchar 对于其他类型似乎效果很好 这是一个错误吗 和ResultSet getStr
  • 为什么Golang创建切片时会有CAPACITY参数

    这是一个非常简单的问题 If the capacityGolang中的一个切片的容量是可以被超出的 为什么首先要有一个容量参数呢 我认为这与内存管理 某种 知道在内存中分配切片的位置 但我不确切知道 If the capacityGolan
  • MSChart 轴线

    如何显示图表中每个条形的轴线 我只有第二个 第四个 替代文本 http img35 imageshack us img35 6106 chartiu png 我找到了答案 chartArea AxisX MajorGrid Interval
  • 控制 ggparcoord 中的颜色(来自 GGally 包)

    我正在尝试对特定 ggparcoord 图硬编码所需的线条颜色 例如 当我创建下面的 ggparcoord 图时 library GGally x data frame a runif 100 0 1 b runif 100 0 1 c r
  • Bash - 查找匹配的文件对[重复]

    这个问题在这里已经有答案了 我的文件夹中有很多文件 Filename1 mp4 Filename2 mp4 Filename3 mp4 Etc 以及许多名称添加后缀的文件 Filename1 x264 mp4 Filename2 x264
  • 脚本无法正确接收 url

    我正在使用组合的批处理和java脚本 我发现使用批处理文件从网站检索html 而我们解决的一个问题是没有返回所需的输出 就像我在firefox中使用url时出现的那样 我用来拉取 html 的脚本是 if This IsBatch then
  • 我应该如何循环遍历依赖于前一个循环值的异步函数?

    我试图在 node js 中执行的操作的同步版本 为了可读性而简化 var value null var allValues do value getValue value load the next value if value allV
  • iframe 中的在新窗口中打开链接

    我的页面上有一个 iframe 并且有一个链接 在同一域上 我想在新的物理窗口中打开 当我使用 target blank 时 它只是使用新的 iframe 重新加载页面 我还尝试了这个 JavaScript jQuery 代码 docume
  • 带有用户单击所选组件的动态选项卡

    我正在尝试设置一个选项卡系统 允许组件自行注册 带有标题 第一个选项卡就像一个收件箱 有很多操作 链接项可供用户选择 并且每次单击都应该能够在单击时实例化一个新组件 操作 链接来自 JSON 然后 实例化的组件会将其自身注册为新选项卡 我不
  • Swagger 多个示例未显示

    当我将示例添加到我的 swagger 文档中并在 swagger 编辑器上测试它时 它永远不会显示在任何地方 有人能给我一个例子 说明多个示例实际上在任何地方显示吗 Here is an example of how multiple ex
  • 我想设置每天不同时间触发的重复闹钟

    我需要每天日出时触发闹钟 我得到的日出时间是这样的 06 55 Location location new Location latitude longitude SunriseSunsetCalculator calculator new
  • 安卓:撤销权限

    再会 我正在尝试制作捕获图像然后将其显示在 gridview 中的应用程序 但是当我单击按钮开始捕获时出现此错误 Logcat java lang SecurityException Permission Denial starting I
  • 如何让所有 .py 文件通过 Spyder 启动?

    我使用 Anaconda 安装了 Spyder 并且可以使用开始菜单 Win10 中的 Spyder 图标启动 IDE 我想设置我的首选项以打开所有 py文件与 Spyder 所以我按照 Spyder 开始菜单按钮找到可执行文件 pytho
  • 使用 JavaScript 检查 HTML 片段是否有效

    我需要一个可靠的 JavaScript 库 函数来检查我可以从代码中调用的 HTML 片段是否有效 例如 它应该检查打开的标签和引号是否闭合 嵌套是否正确等 我不希望验证失败 因为某些东西不是 100 标准 但无论如何都会起作用 Updat
  • 矩阵求幂方法JAVA

    我很难创建一种方法来提高矩阵的幂 我尝试使用这个 public static int powerMethod int matrix int power int temp matrix for int i power i 1 i temp t
  • 在Excel中将大时间格式转换为小数

    我正在尝试将 Excel 中的大时间值转换为小时的十进制数 我目前有一列为呼叫中心添加了 就绪时间 总和为 3545 20 02 我现在希望以十进制格式显示相同的时间 例如3545 333 因为它用于另一个计算 作为参考 当我将上述时间转换
  • 如何在 Windows 10 和 Python 3.8 上安装适用于 C# (VS2019) 的 Python.NET?

    Python NET的官方网站上说支持Python 3 8 伟大的 现在我有兴趣从用 C NET Framework v4 7 2 开发的应用程序调用现有的 python 3 8 模块 EDITS 由于 Python NET 的作者几乎没有