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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux基础——gcc编译、静态库与动态库(共享库)

    Linux基础——gcc编译、静态库与动态库(共享库)gcc编译器1、gcc工作流程2、gcc常用参数参数用途-v查看版本-o产生目标文件-I+目录指定头文件目录-D编译时定义宏-00/-01/-03没有优化/缺省值/优化级别最高-Wall提示更多警告信息-c只编译子程序-E生成预处理文件…

    2022年9月27日
    3
  • Flutter 项目实战 下拉刷新、上拉加载 九

    Flutter 项目实战 下拉刷新、上拉加载 九下拉刷新和上拉加载更多可以更好的分页加载数据

    2025年12月13日
    3
  • Pycharm安装django包[通俗易懂]

    Pycharm安装django包[通俗易懂]**pycahrm安装django1.点击file,找到settings点击**2.找到project,点击projectinterpret3.点击旁边的加号4.搜索栏输入django搜索,看到django选项后直接点击然后安装最后安装成功后会有一个successful的提示,然后安装完成后可以在电脑里面打开cmd命令行激活django看是否能运行:5.输入activatedjango激活到此,django安装包已经安装成功…

    2022年8月29日
    7
  • MATLAB绘图怎么变得更好看[通俗易懂]

    MATLAB绘图怎么变得更好看[通俗易懂]同样用的都是MATLAB,为啥大佬们画的图都那么好看,而你画的图都是简单、普通,那是因为我们掌握的基础元素不一样,只有掌握了最基本的基础元素,再加上日益增长的审美,才会有一张好图出来。二维绘图 函数名 说明 plot 基本的线性坐标绘图 loglog X-Y轴双对数坐标绘图 …

    2022年6月20日
    26
  • wpf resizemode(介绍自己)

    namespaceWindowsApplication1{///<summary>///InteractionlogicforWindow1.xaml///</summary>publicpartialclassWindow1:Window{publicWindo…

    2022年4月14日
    85
  • python中替换字符串中字符_Python replace()函数:替换字符串中的某个字符「建议收藏」

    python中替换字符串中字符_Python replace()函数:替换字符串中的某个字符「建议收藏」下面我们将通过一组示例,详细给大家说明下关于用python的替换问题,相信大家结合实例一定非常容易理解,一起来看下吧~基础了解——replace()函数语法:str.replace(old,new[,max])参数:old–将被替换的子字符串。new–新字符串,用于替换old子字符串。max–可选字符串,替换不超过max次。返回值:返回字符串中的old(旧字符串)替…

    2022年6月7日
    56

发表回复

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

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