如何运行.pyc(编译的python)文件?


18

当我编译一个python文件时,我得到一个* .pyc文件。当我尝试运行该程序时,我收到一条消息,提示没有用于运行它们的程序。当我通过该选项在线搜索程序时,它说没有。谁能帮助我在其中运行文件?

Answers:


24

由于您的python文件是字节编译的,因此您需要通过python解释器运行它

python yourfile.pyc

您可以直接运行.py文件的原因是因为您已

#!/usr/bin/python

要么

#!/usr/bin/env python

或.py文件第一行中的类似内容。这告诉您的外壳程序使用python解释器执行文件的其余部分。


3
为了配合这样的回答:一个.pyc文件文件未编译在长期的严格意义上的,因为它不是本机代码。正如@tomdachi所写,这是python特定的字节码(非常类似于Java .class),这就是为什么它仍然需要python解释器来实现的原因。
皮埃尔·安托万

实际上,只有在导入py文件时才生成pyc。所以运行pyc文件是没有用的!
某一位癌症和卓越的工程师来陆家嘴搞金融观察是为了理想哈哈哈

2

为了反编译已编译的.pyc python3文件,我uncompyle6在当前的Ubuntu OS中使用了以下命令:

  1. 安装uncompyle6:

    pip3 install uncompyle6
  2. 要从.pyc文件创建.py文件,请运行:

    uncompyle6 -o . your_filename.pyc
  3. 自动使用相同的现有.pyc文件名创建一个新的.py文件。


-1

Python编译.py文件并将其保存为.pyc文件,以便它可以在后续调用中引用它们。.pyc包含Python源文件的编译字节码,这是Python解释器将源代码编译到的字节码。然后,此代码由Python的虚拟机执行。删除它们(.pyc)没有什么害处,但是如果您要进行大量处理,它们将节省编译时间。

Python是一种解释型语言,与编译型语言相反,尽管由于字节码编译器的存在,两者之间的区别可能很模糊。编译通常意味着转换为运行速度最快的机器代码。但是口译员会采用人类可读的文本并执行它。他们可以在中间阶段做到这一点。

例如,当您运行myprog.py源文件时,python解释器会首先查看是否myprog.pyc存在(这是的字节码编译版本myprog.py),以及是否比早myprog.py。如果是这样,解释器将运行它。如果它不存在,或者myprog.py比它更新(意味着您已经更改了源文件),则解释器首先编译myprog.pymyprog.pyc

上面的示例有一个例外。如果放在#! /usr/bin/env python的第一行myprog.py,则使其成为可执行文件,然后myprog.py自行运行。


1
欢迎来到Ask Ubuntu!这很好地解释了为什么pyc文件存在,但您尚未回答如何运行文件的问题。它可以被视为非常广泛的评论,而不是答案。请编辑您的帖子以添加实际答案。
Melebius
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.