C#使用pythonnet调用python代码过程
版本对应关系
pythonnet 版本3.0.1,python版本3.8.
-
如果使用python3.10,会出现报错python310.dll. ---> System.ComponentModel.Win32Exception: 找不到指定的模块
-
Net程序使用64位,如果使用anyCPU或者32位,会出现Python.Runtime.BadPythonDllException:“Runtime.PythonDLL was not set or does not point to a supported Python runtime DLL. See https://github.com/pythonnet/pythonnet#embedding-python-in-net”
使用流程
-
-
string dllPath = @"C:\Program Files\Python38\python38.dll";
-
string pythonHomePath = @"C:\Program Files\Python38";
-
-
// 对应python内的重要路径
-
string[] py_paths = {"DLLs", "lib", "lib\\site-packages", "lib\\site-packages\\win32"
-
, "lib\\site-packages\\win32/lib", "lib\\site-packages\\Pythonwin" };
-
string pySearchPath = $"{pythonHomePath};";
-
foreach (string p in py_paths)
-
{
-
pySearchPath = $"{pythonHomePath}\\{p};";
-
}
-
-
// 此处解决BadPythonDllException报错
-
Runtime.PythonDLL = dllPath;
-
Environment.SetEnvironmentVariable("PYTHONNET_PYDLL", dllPath);
-
// 配置python环境搜索路径解决PythonEngine.Initialize() 崩溃
-
PythonEngine.PythonHome = pythonHomePath;
-
PythonEngine.PythonPath = pySearchPath;
-
-
PythonEngine.Initialize();
-
-
-
string position = "";
-
using (Py.GIL())
-
{
-
string code = File.ReadAllText(@"E:\main.py");
-
var scriptCompiled = PythonEngine.Compile(code, "");
-
dynamic test = Py.CreateScope();
-
test.Execute(scriptCompiled);
-
dynamic r1 = test.replace("Init Python"); //OK
-
// Console.WriteLine(r1);
-
Debug.LogError("Init Python");
-
position = (string) r1;
-
}
-
-
PythonEngine.Shutdown();
数据类型的对应
string[] mylist = (string[])pyList;
//or
List<string> mylist = ((string[])pyList).ToList<string>();
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgfkbhh
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
怎样阻止微信小程序自动打开
PHP中文网 06-13 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01