请教一下大佬们.py 转.pyd 的方法

2019-04-04 20:43:25 +08:00
 lovejunjie1
转 pyd 的需求主要是两点。

1.加速已有部件的运行速度
2.功能共享,源码保密

目前已经了解到了 Cython 的 build 方法,目前还没跑通,因为工作原因,必须使用 2.7 的 python,在油管和谷歌上看到的大部分都是 python3 的教程。当我自己把库带入到 2.7 的时候就死活也成功不了。很受打击,有点沮丧。

后来转到 python 开发包,用 VS2008 直接编译 pyd 扩展。这个我倒是弄明白方法了,但是效率很低,很多输入输出类型需要转换,刚好我某些组件需要提速。关键部分我愿意去重新编译。

但是还有很多不是过于核心,但是为了代码不被恶意修改后,二次放出。需要保护的地方,这些代码要是一个一个去编译 pyd,我就死了。

所以请教各位 V 友,如何才能跑通 Cython 批量转换 python2.7 代码的这条路呢?

或者说还有其他的康庄大道,恳请各位 V 友指点一下

ps:其中有使用到 pyqt4 的部分,如果 pyqt4 会影响到 Cython 批量转换的话,还请各位大大多提醒一下注意事项
3053 次点击
所在节点    Python
8 条回复
Latin
2019-04-04 23:02:56 +08:00
编译完也不一定能正常跑,目前还没有特别完善的混淆机制
www5070504
2019-04-05 09:16:14 +08:00
如果是想保密源代码 用 pyinstaller 也可以
beordle
2019-04-05 16:34:11 +08:00
nuitka 一个一个去弄成 so/pyd 就可以了。
NoAnyLove
2019-04-07 13:20:57 +08:00
版本是硬伤啊。不负责任型推荐<http://nuitka.net/pages/overview.html>,官方描述来看完全符合你的要求,不过我没用过,不知道到底如何。
lovejunjie1
2019-04-07 15:30:11 +08:00
@www5070504 感谢建议,这个方法不适合我。工作环境是跨平台的,并且不是直接引用的,是在工作环境启动后,在内嵌的 python27 中运行的
lovejunjie1
2019-04-07 15:31:47 +08:00
@Latin emmmmm,这种事情是因为没镇住八阿哥,还是 Cgrass 的码子写好的锅呀?
lovejunjie1
2019-04-07 15:32:48 +08:00
@beordle
@NoAnyLove
感谢两位,我先去看看哈。不管能不能搞定我都会回来回复哒
justou
2019-04-07 16:42:47 +08:00
from setuptools import setup, Extension
from Cython.Build import cythonize

setup(ext_modules=cythonize(['one.py','two.py'])) 列表里面放要编译成 pyd 的脚本

python setup.py build_ext --inplace 编译
编译器用 https://www.microsoft.com/en-us/download/details.aspx?id=44266

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/552191

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX