Eva*_*ark 28 python compiled file
是否可以让Python将.pyc文件保存到单独的文件夹位置sys.path?
/code
foo.py
foo.pyc
bar.py
bar.pyc
Run Code Online (Sandbox Code Playgroud)
至:
/code
foo.py
bar.py
/code_compiled
foo.pyc
bar.pyc
Run Code Online (Sandbox Code Playgroud)
我想这样,因为我觉得它更有条理.感谢你给与我的帮助.
jfs*_*jfs 17
有PEP 304:控制字节码文件的生成.它的状态是Withdrawn和相应的补丁被拒绝.因此,可能没有直接的方法来做到这一点.
如果您不需要源代码,那么您可能只是删除*.py文件.*.pyc文件可以原样使用或包装在鸡蛋中.
Cha*_*iam 17
在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及更高版本.可怜的黑客在此之前替代了版本.
如果您愿意为此牺牲字节码生成,可以使用命令行标志:
python -B file_that_imports_others.py
Run Code Online (Sandbox Code Playgroud)
可以放入 IDE 的构建/运行首选项中