python下编译py成pyc和pyo (文件加密)

需要注意的是,编译成pyc或者pyo文件后需要将命名改成与源Python命名一致,将其放在源目录下,虽然其他python文件调用pyd时显示不能检测到该模块,但实际上可以运行。

由于pyc的编译收到python版本的影响,所以当将编译后的pyc迁移到另一台电脑中时,最好保持python环境一致。

将python文件.py编译成pyc二进制文件:

python -m py_file.py

或者通过脚本运行

import py_compile ##单个文件编译

import compileall ##多个文件编译

py_compile.compile('path') ##path是包括.py文件名的路径

将python文件编译成pyo二进制文件:

python -O -m py_file.py

pyc是一种二进制文件,是由py文件经过编译后,生成的文件,是一种byte code,py文件变成pyc文件后,加载的速度有所提高,而且pyc是一种跨平台的字节码,是由python的虚拟机来执行的,这个是类似于JAVA或者.NET的虚拟机的概念。

注意事项:pyc的内容,是跟python的版本相关的,不同版本编译后的pyc文件是不同的,2.5编译的pyc文件,2.4版本的 python是无法执行的。 什么是pyo文件? pyo是优化编译后的程序 python -O 源文件即可将源程序编译为pyo文件

什么是pyd文件?

pyd是python的动态链接库。windows上为pyd文件,Linux上为so文件,pyd文件实际就是dll文件 编译成pyd的方法如下:

命令行下:(在项目目录下打开命令行或者shell,该命令只能编译一个文件,编译之后会发现出现三个文件,yourmod.c、yourmod.html、yourmod-win_amd64.pyd,此时将c、html和原py文件删除,将pyd文件命名更改为yourmod就可以)

cythonize -a -i yourmod.pyx

python代码:(在原项目中编写setup.py文件)

from distutils.core import setup from Cython.Build import cythonize import os

''' 该文件的执行需要的在Terminal中输入 python setup.py build_ext --inplace !!! 使用Cpython 编译python文件,关键函数编译成pyd文件(相当于dll) '''

针对多文件情况设置,单文件就只写一个就行

key_funs = ["yourmod1.py", "yourmod2.py", "yourmod3.py"]

setup(

name="XX app",

ext_modules = cythonize(key_funs), )

''' 1、将编译后的pyd文件的命名更改成与原py文件一致 2、删除编译后得到的c文件和原py文件 '''

print("——————", os.getcwd(), "——————")

files = os.listdir(os.getcwd()) print(files)

for fi in files: if fi.contains(".pyd"): re_name = fi.split(".")[0] + ".pyd" print(re_name) os.rename(fi, re_name) elif fi.contains(".c") or fi in key_funs: os.remove(fi)

运行方式 在原目录的命令行下执行

python setup.py build_ext --inplace

linux下调用pyd文件,linux pyd相关推荐

  1. linux下备份mssql文件,linux服务器怎么定时备份mysql的sql文件数据

    一.编写备份shell脚本 #!/bin/bash #保存备份个数,备份31天数据 number=31 #备份保存路径 backup_dir=/root/mysql/backups #日期 dd=`d ...

  2. linux下.rar的文件,Linux下.rar压缩文件处理 (RAR 4.11 for linux )

    环境:centos 6.2 download :RAR 4.11 for linux : http://www.rarsoft.com/download.htm 本博客内容均为自己在linux学习路上 ...

  3. 在linux下创立bash文件,Linux文件管理及bash特性

    一.Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示 mkdir,rmdir,pwd,cd,cp,touch,mv 1.mkdir:创建目录 -p:递归创建多个目录 2.rmdi ...

  4. linux下编辑某个文件,linux下修改以某个字母开头的文件后戳

    1.怎么在linux下修改以某一字母开头的文件后戳 源文件内容[root@localhost test]# ls stu10.txt.php  stu3.txt.php  stu6.txt.php   ...

  5. 如何在linux下运行matlab文件,linux bash下如何运行Matlab程序

    购置服务器后,应安装相应的科学计算软件.对于有显示器的服务器,用户可以方便的使用图形界面操作软件.而对于常见的远程登录方式,或是无显示设备的服务器而言,一般采用bash命令操作软件.这里以常用的Mat ...

  6. linux下挂载ntfs文件,Linux 下使用 NTFS 文件系统(linux挂载ntfs数据盘)

    背景:NTFS 为 Windows 操作系统下常用的文件系统.在使用Linux 系统时可能会需要读取 NTFS 文件系统中的数据. 方法1 Windows 系统更换为 Linux 系统后,比如更换为 ...

  7. linux下如何bash文件,Linux系统的文件管理命令及bash的相关工作特性

    一.Linux系统的文件管理命令: 1 \pwd:printing working directory 2 \cd:change directory     cd  [/PATH/TO/SOMEDIR ...

  8. linux下全盘查找文件,linux下的查找文件命令find

    find 1.作用 find命令的作用是在目录中搜索文件,它的使用权限是所有用户. 2.格式 find [path][options][expression] path指定目录路径,系统从这里开始沿着 ...

  9. linux下安装.hex文件,Linux中hexdump命令用法

    hexdump命令一般用来查看"二进制"文件的十六进制编码,从手册上查看,其查看的内容还要很多,诸如:ascii, decimal, hexadecimal, octal 参数: ...

  10. linux下的tar文件,Linux系统下tar文件安装方法

    将安装文件拷贝至你的目录中 如果是以root身份登录上的,就将软件拷贝至/root中. cp xxx.tar.gz /root 解压缩包 tar xvzf xxx.tar.gz 切换到安装目录下 cd ...

最新文章

  1. 通信与计算机技术的联系,通信技术与计算机技术融合发展论文
  2. 【Flink】Flink 启动报错 DirectoryNotEmptyException Could not close resource
  3. C#.Net工作笔记014---C#中internal的意思
  4. 【C语言】标准内容介绍(C99)
  5. html将option设为默认,select设置option默认
  6. 完美解决桌面右键一直转圈,反应卡顿问题(重点是怎样删除workfolders)
  7. 后端返回文件流PDF文件前端如何实现下载/在线打开
  8. pomelo之master服务器的启动
  9. java 三维_java之三维数组
  10. 2013-2014 NBA 东西部决赛 + 总决赛合集
  11. 6009. 【THUWC2019模拟2019.1.18】Counting
  12. IDEA中Maven配置出现Cannot resolve plugin org.apache.maven.pluginsmaven-resources-plugin3.1.0
  13. 国庆假期你是在花钱,还是在赚钱呢?
  14. Python绘制万花筒
  15. kali国内更新源+中文输入法安装+SSH
  16. 计数排序 详解 C代码
  17. 强大的vim:vimplus
  18. 计算机注册表主策略的作用,注册表组策略的含义与作用
  19. 好乐买创始人-李树斌
  20. 初入Python —— Python下载

热门文章

  1. 翟菜花:搭上营销快通车的乳业,又是如何玩转互联网营销时代的?
  2. [CSP-S模拟测试]:跳房子(模拟)
  3. 考研单词记录 4.11day4
  4. 设置个性桌面计算机教案,第十三课《个性化的桌面设置》教学设计
  5. 面向对象之抽象类与接口【Java】
  6. JAVA自学-day13-StringBuffer类、数组高级以及Arrays、Integer类
  7. SCI检索号识别一法:UT-WOS与UT-ISI
  8. 我们真的需要智能路由器?
  9. 清除显卡右键菜单批处理.bat
  10. mongodb mysql数据类型_插入mongodb类型