如何编译Python包到一个dll(How to compile a Python package

2019-06-25 02:43发布

嗯,我有一个Python包。 我需要编译它作为DLL之前在轻松导入的方式分发。 怎么样? 你可能认为*.pyc 。 但我读的地方任何*.pyc可以很容易地反编译!

更新:遵循以下:
1)I写Python包
2)要分发
3)不希望分发源
4)* .pyc文件被反编译>>源可以提取!
5)DLL是标准

Answer 1:

写下你想在用Cython隐藏一切,它编译成pyd 。 这是接近你可以去让编译Python代码。

此外,DLL不是一个标准,而不是在Python的世界。 他们不便于携带,无论是。



Answer 2:

您可以使用py2exe.org到Python脚本转换成Windows可执行文件。 诚然,这将只能在Windows上运行,但它更好然后什么。



Answer 3:

您可以C内嵌入蟒蛇 。 真正的诀窍是C值和Python值之间的转换。 一旦你做到了这一点,虽然,使得DLL是非常简单的 。

但是,为什么你需要做一个dll? 你需要使用这个来自非Python程序?



Answer 4:

Python的嵌入是支持CFFI 1.5版 ,您可以创建一个.dll ,可以由Windows C应用程序中使用文件。



Answer 5:

我也用用Cython产生pyd文件,如Dikei写道。 但是,如果你真的想保护您的代码,你应该更好地编写C ++重要的东西。 最好将C ++Python的组合。 这个想法:你会离开的Python代码开放进行调整,这样你就不必一遍又一遍编译一切。 这意味着,你会写在C“核心” ++(这是最安全的解决方案,这些天),并使用这些dll在你的Python代码文件。 这要看什么样的工具或程序的你,正在建设和要如何执行它。 我主要是创建一个可执行文件( exeapp )一旦我完成一个工具或程序,但这是更多的最终用户。 这可以用做py2exepy2app (包括64位兼容)。 如果实现了解释,最终用户的机器没有有系统上安装的蟒蛇。

一个pyd文件是类似于一个dll和内部蟒蛇完全支持。 所以,你可以正常导入模块。 你可以找到更多关于它的信息在这里 。

使用和产生pyd文件是创建安全和便携Python代码最快,最简单的方法。

你也可以写现实dll文件在C ++ ,用导入ctypes使用它们(这里好后 ,这里的蟒蛇说明它是如何工作)



Answer 6:

为了扩大对尼克·奥德尔答案

你必须在Windows上DLL来工作,他们是不可移植。

但是下面的代码是跨平台和平台都支持运行时间所以这可以重新编译为每个需要它的工作平台上。

Python没有(还)提供了一种简单的工具来创建一个DLL,但是你可以在C / C做++


首先,你需要一个编译器(Windows没有一个默认值)显着的Cygwin,MinGW的或Visual Studio。

℃的基础知识也是必要的(因为我们将主要编码C)。

您还需要包括必要的头,我会跳过这所以它不会成为可怕的长,将承担一切设置正确。


对于本演示中,我将打印一个传统的Hello World:

Python代码,我们将转换为DLL:

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。 有迹象表明,应该在这里增加了一些额外的东西,但为了简便起见我已经离开了那些。

编译它,你应该有一个DLL。 :)


这还不是全部。 您将需要分发需要任何依赖,这将意味着python36.dll运行时和其他一些组件运行的Python脚本。

我的C代码是不完美的,因此,如果任何人都可以发现任何改进,请评论,我会尽我所能来解决它​​。


这也可能是在C#中可以从这个答案我如何在C#中调用特定的方法从一个Python脚本? ,因为C#可以创建DLL文件,并且可以从C#调用Python功能。



Answer 7:

您可以使用pyinstaller为.py文件转换成可执行文件所有需要的软件包为.dll文件格式。

第1步:安装PIP pyinstaller,

第2步:新的python文件让我们将其命名为code.py。

第3步:写代码,即打印的一些线(的“Hello World”)

第4步:打开命令提示符在相同的位置,写pyinstaller code.py回车。 最后一步看到在同一位置的两个文件夹名建造,DIST将被创建。 DIST文件夹里面有个文件夹代码,并且文件夹内有一个与所需的.dll文件一起exe文件code.exe。



Answer 8:

抓斗的Visual Studio Express和IronPython和这样做的? 你会在Python 2.7.6世界虽然。



文章来源: How to compile a Python package to a dll