是否可以导入已编译的python文件?

时间:2012-03-28 18:02:33

标签: python import module compiled

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

6 个答案:

答案 0 :(得分:11)

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

(如果foo.py更新,则会使用它)

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

答案 1 :(得分:3)

使用导入不带扩展程序。 Python会查看文件是否已更改,如果不是,它将使用以前创建的pyc文件。

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

答案 2 :(得分:1)

import module

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

如果没有源代码,python将自动导入.pyc

“Compiled” Python files

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

简而言之,仅导入Python编译文件(例如 module.pyc ),只需将其放置在与源文件相同的目录(例如 module.py )中),并确保其中没有源文件。然后,通常的import module将无缝运行。

如果在与编译文件相同的目录中有一个源文件,则Python将改用__pycache__目录中的编译文件,如果不存在,则从源代码重新编译。

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

flow chart链接的PEP 3147中有一个非常不错的documentation