是否可以让Python将.pyc
文件保存到单独的文件夹位置sys.path
?
/code foo.py foo.pyc bar.py bar.pyc
至:
/code foo.py bar.py /code_compiled foo.pyc bar.pyc
我想这样,因为我觉得它更有条理.感谢你给与我的帮助.
有PEP 304:控制字节码文件的生成.它的状态是Withdrawn
和相应的补丁被拒绝.因此,可能没有直接的方法来做到这一点.
如果您不需要源代码,那么您可能只是删除*.py
文件.*.pyc
文件可以原样使用或包装在鸡蛋中.
在2003年的黑暗和古代,PEP 304出现了挑战这个问题.它的补丁被发现缺乏.环境变量平台依赖性和版本偏斜将其撕成了碎片,并将其碎片分散在荒地上.
在经历了多年的痛苦之后,2009年的最后几天,一位新的挑战者崛起.巴里华沙召唤了PEP 3147并派它去做战斗,挥舞着一种技巧简单的武器.PEP粉碎了混乱的PYC文件,让那些试图争辩其PYC文件的Waring Unladen Swallow和CPython解释员沉默,并允许Python轻松休息,其死鬼偶尔在深夜运行.PEP 3147被独裁者认定是值得的,并且在3.2时代被授予官方角色.
从3.2开始,Python将模块的PYC文件存储在__pycache__
模块目录下.每个PYC文件包含解释器的名称和版本,例如__pycache__/foo.cpython-33.pyc
.您可能还有__pycache__/foo.cpython-32.pyc
早期版本的Python编译.正确的魔法发生:如果与源代码不同步,则使用正确的魔法并重新编译.在运行时,查看模块的mymodule.__cached__
pyc文件名并解析它imp.get_tag()
.有关详细信息,请参阅"新增功能"部分.
TL; DR - 只适用于Python 3.2及更高版本.可怜的黑客在此之前替代了版本.