扩展 Nick ODell 的答案
您必须在 Windows 上运行 DLL,它们不可移植。
但是,下面的代码是跨平台的,所有平台都支持运行时,因此可以为您需要它工作的每个平台重新编译。
Python(还)没有提供创建 dll 的简单工具,但是您可以在 C/C++ 中完成
首先,您需要一个编译器(Windows 默认没有),特别是 Cygwin、MinGW 或 Visual Studio。
C 的基本知识也是必要的(因为我们将主要使用 C 进行编码)。
你还需要包含必要的标题,我会跳过这个,这样它就不会变得太长,并假设一切都设置正确。
对于这个演示,我将打印一个传统的 hello world:
我们将转换为 DLL 的 Python 代码:
def foo(): print("hello world")
C 代码:
#include "Python.h" // Includes everything to use the Python-C API
int foo(void); // Declare foo
int foo(void) { // Name of our function in our DLL
Py_Initialize(); // Initialise Python
PyRun_SimpleString("print('hello world')"); // Run the Python commands
return 0; // Finish execution
}
这是用于嵌入 Python 的 tutorial。这里应该添加一些额外的东西,但为简洁起见,我将它们省略了。
编译它,你应该有一个 DLL。 :)
这还不是全部。您将需要分发所需的任何依赖项,这意味着 python36.dll 运行时和一些其他组件来运行 Python 脚本。
我的 C 代码并不完美,所以如果有人发现任何改进,请发表评论,我会尽力修复它。
这个答案How do I call a specific Method from a Python Script in C#? 在 C# 中也有可能,因为 C# 可以创建 DLL,并且您可以从 C# 调用 Python 函数。