11

我在win系统上工作,我想知道一种方法可以使用可以在cmd行中运行的python脚本来批量编译py文件。我写了一个简单的python代码。

import py_compile, os, glob
dir = 'D:\\FAS\\config'
for f in glob.glob(dir + '\\*.py'):
    py_compile.compile(f)
    print "Success compile the file:   %s" % f

它工作不方便,无法编译文件夹子文件夹中的文件。我希望你的帮助。

4

3 回答 3

28
import compileall

compileall.compile_dir('D:/FAS/config', force=True)
于 2012-11-22T11:42:54.913 回答
2

从命令行编译当前目录和子目录中存在的所有文件,您可以简单地使用以下命令。

python3 -m compileall . -q

如果您想要已编译文件的列表,请删除 -q。

您可以使用 -l in停止子目录中的递归

python3 -m compileall . -l

您也可以为此编写脚本。

import compileall

compileall.compile_dir('D:/FAS/config', force=True)

即使时间戳是最新的,强制也会重建。

你可以在这里读更多关于它的内容

于 2020-01-06T10:36:26.203 回答
1

我在升级库模块时遇到了类似的问题。我在不同的 git 分支上有不同的模块版本,当我切换分支时,即使我使用 compileall 重新编译,它们也会停止工作。

我的简单解决方案是从库中删除所有.pyc文件并运行脚本,以便它自己编译所有必要的模块。有效!!

删除pyc文件的简单命令find libs/ -name *.pyc -exec rm {} \;

于 2015-01-21T21:11:52.557 回答