20

我似乎不知道如何将已编译的 .pyc 模块导入到我的代码中,以便我可以在我的主脚本中使用它。这甚至可能吗?

4

6 回答 6

18

如果存在 foo.pyc,无论 foo.py 是否存在,import foo 都会自动使用 foo.pyc

(如果 foo.py 较新,将使用它)

http://docs.python.org/tutorial/modules.html

于 2012-03-28T18:09:16.107 回答
4

简而言之,要仅导入 Python 编译文件(例如module.pyc),只需将其放在源(例如module.py)所在的同一目录中,并确保没有相应的源文件module.py在我们的例子中)那里。然后通常import module将无缝工作。

如果与编译文件在同一目录下有源文件,Python 将使用该目录中的编译文件,__pycache__如果不存在则从源重新编译。

如果在同一目录中没有放置“.pyc”就删除了源文件,即使该__pycache__目录中存在编译文件,导入也会失败。另请注意,下的文件__pycache__遵循不同的命名约定。如果你复制它们,请确保它们被重命名,以便它与源文件具有相同的名称,除了扩展名必须是“pyc”而不是“py”。

从文档链接的 PEP 3147 中有一个非常好的流程图

于 2020-07-30T15:23:45.560 回答
3

使用不带扩展名的导入。Python 将查看文件是否已更改,如果没有更改,它将使用先前创建的 pyc 文件。

但请注意,如果您真的想要更高的性能,我建议您使用PyPy,它比标准的 CPython 实现要快得多。(但请注意,它仍然是 Python 2)

于 2012-03-28T19:15:40.040 回答
1

是的,但请注意,确保使用“-O”选项启动 python!以我个人的经验,如果您只有 .pyc 或 .pyo 文件,则在没有标志的情况下运行“python.exe”并尝试导入将失败,但是运行 python.exe -O 然后尝试正常导入应该可以.

于 2015-03-06T02:58:13.113 回答
1

import module

如果有一个 . 源文件,如果它是最新的py,核心将自动使用它。.pyc

如果没有源,python 会自动导入.pyc.

“编译”的 Python 文件

于 2012-03-28T18:07:48.947 回答
0

导入时使用pyc文件名,python会自动加载。

于 2012-03-28T18:10:41.327 回答