gpt4 book ai didi

python - Cython 在生成的代码中包含其他导入

转载 作者:行者123 更新时间:2023-11-30 22:34:52 25 4
gpt4 key购买 nike

经过几个小时的努力,我终于成功地将我的 Python 代码转换为 C,然后转换为 exe 文件,发现导入不起作用。我想知道是否有人知道如何使其包含所有内容?我的搜索没有任何结果。

我不确定这是否会有所作为,但这就是我正在做的事情:

--inplace选项不适用于 setup.py (因为它会生成一个无法编译的 C 文件),所以我通过命令行使用 cython --embed -o main.c main.py 来完成此操作.

我复制了libsinclude将 Python 文件夹复制到另一个文件夹中,然后从那里编译 C 文件。这是我尝试运行脚本时出现的错误:

Traceback (most recent call last):
File "start_tracking.py", line 5, in init start_tracking (start_tracking.c:1133)
ImportError: No module named core.constants

我该如何将所有导入包含在生成的 C 代码中(而不是将所有内容复制到一个文件中)?

最佳答案

{您可能需要使用 cx_freeze https://www.google.com/url?sa=t&source=web&rct=j&url=https://anthony-tuininga.github.io/cx_Freeze/&ved=0ahUKEwjxuufa7uDUAhUR0GMKHW9YCJoQFgggMAA&usg=AFQjCNExxKVSPXU3tHdi6ahNqoekGMC1Eg这里有轮子,似乎可以满足您的要求https://pypi.python.org/pypi/cx_Freeze }

好吧,这并不能完全回答您的问题,但它应该有效(尽管不是您采用的方法)。为此,我将为您提供一个巨大的下载链接,您只需放入 (v3.5) .py 文件即可。在您的情况下,.py 文件将通过 import 语句调用您编译的 Cython PYD (如果您实际上包括您自己的 Cython 模块),后跟您调用的任何其他代码。我认为拥有一个包含所有导入的完整 exe 会很棒,但是很多包都需要 DLL 或 PYD 文件才能运行,因此您的构建将始终至少有一个 exe、Python 解释器及其所有依赖项(例如 Python3x.dll)。 DLL)。你可以尝试: memimporter 和 zipextimporter 它们能够从内存/zip-archives 加载 .pyd 文件,而无需将它们解压到文件中,但这只会允许你将所有扩展模块放入 zip 文件中进行分发(并且可能会减慢需要 PYD 和 DLL 加载速度,但我还没有看到有关这些方法的基准测试)。

如果您碰巧在扩展模块的 1 个 zip 包中得到了上述内容,请给我您的代码更改!这已经包括 NumPy、SciPy、Pandas,并且是针对英特尔 MKL 构建的。使用引用链接:https://stackoverflow.com/a/44610044/6037118理想情况下,我会在 .py 文件上使用一些加密算法从该链接扩展该方法,这些算法将在运行时解密。直接下载在这里,但您应该查看我的其他链接以阐明用法:https://www.dropbox.com/sh/2smbgen2i9ilf2e/AADI8A3pCAFU-EqNLTbOiUwJa?dl=0我应该注意,您编译的 PYD 及其依赖的 DLL 也应该位于使用 Visual Studio 2015 x64 for Windows 版本编译的子文件夹中的 extension_modules 中。该链接不会按原样在 Linux 上运行。

关于python - Cython 在生成的代码中包含其他导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44737737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com