我如何将我的python模块及其依赖项(如Numpy/Scipy)打包成一个文件,如c#调用的dll

本文关键字:包成一 Scipy 文件 dll 调用 Numpy python 我的 模块 依赖 | 更新日期: 2023-09-27 18:09:14

在我的项目中,一些算法是在python中作为模块实现的,用于调用和使用Numpy/Scipy等库。现在我需要将这些模块嵌入到我的UI中(由c#实现并在Windows 7中运行)。我需要将我的python模块打包到DLL这样的文件中有两个原因(我不想打包为。exe,因为它对嵌入不友好)。第一个原因是为了方便调用,第二个原因是为了保护我的算法源代码。有人知道吗?

我如何将我的python模块及其依赖项(如Numpy/Scipy)打包成一个文件,如c#调用的dll

最后,我用nuitka解决了我的问题。它将我的模块编译成.pyd文件,我可以通过添加引用Python.Runtime.dll来使用pythonnet导入模块。我的编译命令是:nuitka --module --nofreeze-stdlib --recurse-all --recurse-not-to=numpy --recurse-not-to=sklearn --recurse-not-to=pywt --recurse-not-to=matplotlib --recurse-not-to=matplotlib.pyplot --recurse-not-to=scipy.io myfile.py我的c#代码是:

PythonEngine.Initialize();
IntPtr pythonLock = PythonEngine.AcquireLock();
PythonEngine.RunSimpleString("import sys'n");
PythonEngine.RunSimpleString("sys.path.append('C:''path''to''pyd')'n");
PyObject pModule = PythonEngine.ImportModule("modulename");
pModule.InvokeMethod("funcitonname", para1, para2);

尝试在。net中嵌入CPython:

python4.net