请教一下大佬们.py 转.pyd 的方法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lovejunjie1
V2EX    Python

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

  •  
  •   lovejunjie1 2019-04-04 20:43:25 +08:00 3574 次点击
    这是一个创建于 2380 天前的主题,其中的信息可能已经有所发展或是发生改变。
    转 pyd 的需求主要是两点。

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

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

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

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

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

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

    ps:其中有使用到 pyqt4 的部分,如果 pyqt4 会影响到 Cython 批量转换的话,还请各位大大多提醒一下注意事项
    8 条回复    2019-04-07 16:42:47 +08:00
    Latin
        1
    Latin  
       2019-04-04 23:02:56 +08:00 via Android
    编译完也不一定能正常跑,目前还没有特别完善的混淆机制
    www5070504
        2
    www5070504  
       2019-04-05 09:16:14 +08:00
    如果是想保密源代码 用 pyinstaller 也可以
    beordle
        3
    beordle  
       2019-04-05 16:34:11 +08:00 via Android
    nuitka 一个一个去弄成 so/pyd 就可以了。
    NoAnyLove
        4
    NoAnyLove  
       2019-04-07 13:20:57 +08:00
    版本是硬伤啊。不负责任型推荐<http://nuitka.net/pages/overview.html>,官方描述来看完全符合你的要求,不过我没用过,不知道到底如何。
    lovejunjie1
        5
    lovejunjie1  
    OP
       2019-04-07 15:30:11 +08:00
    @www5070504 感谢建议,这个方法不适合我。工作环境是跨平台的,并且不是直接引用的,是在工作环境启动后,在内嵌的 python27 中运行的
    lovejunjie1
        6
    lovejunjie1  
    OP
       2019-04-07 15:31:47 +08:00
    @Latin emmmmm,这种事情是因为没镇住八阿哥,还是 Cgrass 的码子写好的锅呀?
    lovejunjie1
        7
    lovejunjie1  
    OP
       2019-04-07 15:32:48 +08:00
    @beordle
    @NoAnyLove
    感谢两位,我先去看看哈。不管能不能搞定我都会回来回复哒
    justou
        8
    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
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     857 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 21:40 PVG 05:40 LAX 14:40 JFK 17:40
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86