是否可以导入已编译的python文件?
我似乎不知道如何将编译后的.pyc模块导入到代码中,以便在主脚本中使用它。这可能吗?是否可以导入已编译的python文件?,python,import,module,compiled,Python,Import,Module,Compiled,我似乎不知道如何将编译后的.pyc模块导入到代码中,以便在主脚本中使用它。这可能吗?导入模块 如果有一个.py源文件,内核将自动使用.pyc,如果它是最新的 如果没有源代码,python将自动导入.pyc .如果存在foo.pyc,无论foo.py是否存在,导入foo都将自动使用foo.pyc (如果foo.py较新,将使用它) 在导入中使用pyc文件名,python将自动加载它。使用导入而不使用扩展名。Python将查看文件是否已更改,如果未更改,则将使用先前创建的pyc文件 但是请注意,如果
导入模块
如果有一个.py源文件,内核将自动使用.pyc
,如果它是最新的
如果没有源代码,python将自动导入.pyc
.如果存在foo.pyc,无论foo.py是否存在,导入foo都将自动使用foo.pyc (如果foo.py较新,将使用它)
在导入中使用pyc文件名,python将自动加载它。使用导入而不使用扩展名。Python将查看文件是否已更改,如果未更改,则将使用先前创建的pyc文件
但是请注意,如果您确实想要更高的性能,我建议您使用比标准CPython实现快得多的。(但请注意,它仍然是Python2)是的,但是请注意,一定要用“-O”选项启动Python!根据我个人的经验,如果您只有.pyc或.pyo文件,那么运行“python.exe”而不带标志并尝试导入将失败,但是运行python.exe-O然后尝试正常导入应该可以工作。简而言之,仅导入python编译文件(例如module.pyc),只需将它放在源(例如module.py)所在的同一目录中,并确保那里没有源文件。然后,通常的
导入模块将无缝工作
如果源文件与编译后的文件位于同一目录中,Python将使用\uuuuu pycache\uuuu
目录中的编译后的文件,或者从源文件重新编译(如果不存在)
如果删除源文件而不将“.pyc”放在同一目录中,则即使编译的文件存在于\uuuu pycache\uuu
目录中,导入也将失败。还请注意,\uuupycache\uu
下的文件遵循不同的命名约定。如果跨多个文件复制它们,请确保重命名它们,使其与源文件具有相同的名称,但扩展名必须是“pyc”而不是“py”
PEP 3147中有一个非常好的文件名链接。导入文件名。py
不起作用。您没有在import
语句中指定.py
后缀。如何从不同位置导入它?帮助(“导入”)
良好的文档链接。它与“如果没有源代码,python将自动导入.pyc”相矛盾“Python在两种情况下不检查缓存。首先,它总是重新编译并且不存储直接从命令行加载的模块的结果。其次,如果没有源模块,它不会检查缓存。“导入在解释器(IPython)中对我不起作用。”。我在脚本中测试了它,它成功了。可以在解释器中完成吗?没关系。发现了问题,我的工作目录错误。谢谢你的帮助。仅供参考。PyDev在导入pyc文件时有一个错误。这看起来像是一则广告;OP没有询问速度,是一个新手,因此不太可能关注速度。@sondra.kins嗯,当有人挖出我的一个旧SA答案,我又读了一遍,我觉得很有趣。你是对的,这并没有完全回答原来的问题,但要求加载编译代码,我想我只是想根据我对OPs意图的怀疑,提出一个替代方案。