linux直接运行py文件_linux的系统调用

linux直接运行py文件_linux的系统调用python下编译py成pyc和pyo(文件加密)需要注意的是,编译成pyc或者pyo文件后需要将命名改成与源Python命名一致,将其放在源目录下,虽然其他python文件调用pyd时显示不能检测到该模块,但实际上可以运行。由于pyc的编译收到python版本的影响,所以当将编译后的pyc迁移到另一台电脑中时,最好保持python环境一致。将python文件.py编译成pyc二进制文件:pyt…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206641.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Spring过滤器和拦截器的区别[通俗易懂]

    Spring过滤器和拦截器的区别[通俗易懂]Spring过滤器和拦截器的区别 两者的作用 过滤器:是在javaweb中,你传入的request、response提前过滤掉一些信息,或者提前设置一些参数,然后再传入servlet或者struts的action进行业务逻辑,比如过滤掉非法url(不是login.do的地址请求,如果用户没有登陆都过滤掉),或者在传入servlet或者struts的action前统一设置字符…

    2022年8月23日
    6
  • MySQL 对于千万级的大表要怎么优化?

    MySQL 对于千万级的大表要怎么优化?

    2021年10月15日
    34
  • jQuery自动与手动图片切换效果下载

    效果图:查看效果:http://hovertree.com/jq/hovertreeimg/下载:http://hovertree.com/h/bjaf/gk8mko69.htm使用代码:Hover

    2021年12月21日
    37
  • 什么是虚拟IP_虚拟机IP

    什么是虚拟IP_虚拟机IP【导读】虚拟ip和真实ip区别,下面就是191路由网整理的网络知识百科,来看看吧!大家好,我是191路由器网小编,上述问题将由我为大家讲解。虚拟ip和真实ip区别是真实IP是网络运营商提供的所以不能自己变更,虚拟IP是自己设置的可以变更。虚拟IP,就是一个未分配给真实主机的IP。也就是说对外提供服务器的主机除了有一个真实IP外还有一个虚拟IP,使用这两个IP中的任意一个都可以连接到这台主机。互联网…

    2022年10月20日
    1
  • 树莓派接口定义「建议收藏」

    树莓派接口定义「建议收藏」树莓派接口定义GPIODSI显示端口CSI摄像头接口MicroSD插槽HDMI/USB/Network接口MicroUSB电源接口/3.5mm音频输出接口GPIOGPIO(通用输入/输出接口)是树莓派重要的功能接口,它相当于Arduino上的GPIO引脚。这些引脚可以用于程序中读取电路中的电信号,也可以为控制电路提供电信号。使用GPIO时要非常小心,因为GPIO容易损坏,它使用…

    2022年6月1日
    58
  • Python基础语法[通俗易懂]

    Python基础语法[通俗易懂]学习一门编程语言,通常是学习该语言的以下几个部分的内容:基础语法:如,变量的声明与调用、基本输出语句、代码块语法、注释等;数据类型:通常都为数字、字符串、布尔值、数组、链表、Map、Set等

    2022年7月6日
    19

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号