C#如何調(diào)用Python生成的pyd文件
C#調(diào)用Python生成的pyd文件
1.創(chuàng)建一個C#控制臺程序。
2.vs2017安裝pythonnet_netstandard_py37_win
首先打開nuget包管理器:
輸入NuGet\Install-Package pythonnet_netstandard_py37_win -Version 2.5.2

3.相關(guān)代碼
//設(shè)置conda環(huán)境
var pathToVirtualEnv = @"C:\Users\SXM\anaconda3\envs\suff";
Environment.SetEnvironmentVariable("PATH", pathToVirtualEnv, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONHOME", pathToVirtualEnv, EnvironmentVariableTarget.Process);
Environment.SetEnvironmentVariable("PYTHONPATH", $"{pathToVirtualEnv}\\Lib\\site-packages;{pathToVirtualEnv}\\Lib",
EnvironmentVariableTarget.Process);
using (Py.GIL()) // 使用這個來包裹你調(diào)用python方法的代碼
{
// 先引入python模塊,也就是我們上面生成的pyd文件,如my_module.cp36-win_amd64.pyd
dynamic my_module = Py.Import("train");
// 先引入python模塊,也就是我們上面生成的pyd文件,如my_module.cp36-win_amd64.pyd
dynamic my_module = Py.Import("train");
// Call your python functions.
// Call your python functions.
my_module.func(arg1, arg2);
}可能的報錯
無法加載 DLL“python37”: 找不到指定的模塊。 (異常來自 HRESULT:0x8007007E)。
解決方案
去python環(huán)境中找到python37.dll放到C# 工程 x64\Debug文件中。

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于WPF平臺使用純C#實現(xiàn)動態(tài)處理json字符串
在當(dāng)今的軟件開發(fā)領(lǐng)域,數(shù)據(jù)的交換與存儲變得愈發(fā)頻繁,JSON作為一種輕量級的數(shù)據(jù)交換格式,在 WPF平臺開發(fā)的桌面應(yīng)用里,我們常常需要與各種數(shù)據(jù)源交互,動態(tài)處理JSON字符串就成為了一項必備技能,本文將深入探討如何在 WPF 平臺上,僅使用純C#代碼實現(xiàn)對JSON字符串的動態(tài)處理2025-01-01
C#中的modbus Tcp協(xié)議的數(shù)據(jù)抓取和使用解析
這篇文章主要介紹了C#中的modbus Tcp協(xié)議的數(shù)據(jù)抓取和使用解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
運用示例簡單講解C#取消令牌CancellationTokenSource
這篇文章運用示例簡單講解C#取消令牌CancellationTokenSource,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-08-08
C#使用Pipelines實現(xiàn)處理Socket數(shù)據(jù)包
這篇文章主要為大家詳細(xì)介紹了C#如何使用Pipelines實現(xiàn)處理Socket數(shù)據(jù)包,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
C#使用throw和throw?ex拋出異常的區(qū)別介紹
這篇文章介紹了C#使用throw和throw?ex拋出異常的區(qū)別,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10

