专栏首页工作笔记精华使用Cython的一些小问题 转

使用Cython的一些小问题 转

安装:

py -m pip install cython

py代码转C代码

py -m cython main.py --embed

此处如果不加 --embed ,gcc编译时会出现 undefined reference to `wWinMain@16' 错误

如果遇到这样的提示

FutureWarning: Cython directive 'language_level' not set, using 2 for now (Py2).

在你的py代码中加入(如果你本身用的就是python2可以忽略)

# cython: language_level=3

编译

#编译为控制台应用,测试期最好使用这种方式,可以知道为啥报错
gcc -o main.exe main.c -I E:\Soft\Python\3.6.8_32\include -L E:\Soft\Python\3.6.8_32\libs -lpython36 -municode

#编译为window视窗程序(无黑框)
gcc -o main.exe main.c -I E:\Soft\Python\3.6.8_32\include -L E:\Soft\Python\3.6.8_32\libs -lpython36 -municode -Wl,--subsystem,windows

调试

编译好的程序运行可能会遇到:

NameError: name '__file__' is not defined

这是因为 __file__ 只针对py文件存在,编译之后是无效的,需要替换成:

os.getcwd()  //运行目录
sys.path[0]  //执行文件所在目录

至于dll丢失,路径不对等问题,慢慢排查吧

作者:Spooking 链接:https://www.jianshu.com/p/d2e82fd0f76d

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mac下开启docker API远程调用 转

    docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 2376:2375 \

    stys35
  • 怎么在vue的style标签里面使用变量?

    兄弟,我刚好碰到这个问题。代码里需要不断变更CSS里样式的值(遍历+大量),并通过JS进行设置。基本上要求应该是和你差不多的。 以上所有方法我基本都试过,用了...

    stys35
  • JSCH会大量使用服务器内存吗?会 原

    java实现一个需求用到了jsch,发现服务器内存会被占满。 写了个50进程的jsch-sftp测试连接 put一个文件

    stys35
  • Python 中的 if __name__ == '__main__' 该如何理解

    郭耀华
  • Python 中的 if __name__ == '__main__' 该如何理解

    郭耀华
  • 使用pacemaker配置mariadb高可用集群

    Galera cluster是一个多主同步数据库集群,基于同步复制技术和 Oracle 的 MYSQL/InnoDB。使用Galera Cluster时,您可以...

    tanmx
  • 最全总结 | 聊聊 Python 数据处理全家桶(配置篇)

    常用配件文件的处理方式,包含:JSON、ini / config、YAML、XML 等

    AirPython
  • 如何使用AlphaWallet钱包进行测试网的代币转账/冻结/锁仓投放功能验收?

    【本文目标】 通过本文实践,可以使用AlphaWallet钱包完成Repsten Test Network的ERC20的代币转账,冻结,锁仓投放等功能的验收测...

    辉哥
  • mariadb galera集群配置 转

    把这个站中的10.0.20/centos6-amd64/目录整个下载下来,放到本地做成本地源来使用,本地源的配置如下:  

    阿dai学长
  • MySQL高可用方案-PXC环境部署记录

    之前梳理了Mysql+Keepalived双主热备高可用操作记录,对于mysql高可用方案,经常用到的的主要有下面三种: 一、基于主从复制的高可用方案:双节点主...

    洗尽了浮华

扫码关注云+社区

领取腾讯云代金券