可能重复:
Way to have compiled python files in a separate folder?
当python将模块编译为字节码时,它会从.py文件生成.pyc文件。
我的问题是,是否可以将这些.pyc文件写入与模块所在位置不同的目录?
例如,我有一个大型模块目录。我希望将源代码保存在目录中,并且有一个像“bytecode”这样的子目录,其中存储了所有.pyc文件,而不是使用.pyc文件。
这可能吗?
答案 0 :(得分:14)
“Way to have compiled python files in a seperate folder?”
回答了这个问题简短回答:否 - 除非您运行的是Python 3.2或更高版本 - 请参阅here。
澄清:在3.2之前,你可以编译字节码并按照Brian R. Bondy的建议把它放在别处,但除非你真的从那里运行它(而不是你要保留的文件夹) pristine)Python仍会输出.py文件所在的字节码。
答案 1 :(得分:7)
检查py_compile module,特别是:
py_compile.compile(file[, cfile[, dfile[, doraise]]])
cfile是您感兴趣的参数。
从上面的链接:
...字节码写入cfile, 默认为文件+'c'...
答案 2 :(得分:3)
我自己正在寻找答案,但找不到太多。但是,您可以将文件夹名称添加到新编译的文件名前(需要确保文件夹首先存在)
以下是一些适用于我的代码:
import py_compile
import os
import glob
import shutil
path = ''
for infile in glob.glob( os.path.join(path, '*.py') ):
print "current file is: " + infile
strDestination = 'compiled/' + infile + 'c'
py_compile.compile(infile,strDestination)
答案 3 :(得分:2)
如果“乱扔垃圾”确实是您的问题,您可以随时将.py
,.pyc
和/或.pyo
文件打包到.zip文件中并将其附加到{{{ 1}}。
答案 4 :(得分:0)
我似乎记得在某处读到这是不可能的,并且Python人有理由不能使它成为可能,尽管我不记得在哪里。
编辑:对不起,我误解了这个问题 - 我的意思是,我认为配置Python可执行文件以将其字节码文件默认放在不同的目录中是不可能的(我认为)。你总是可以编写一个小的Python编译器脚本(或者找一个,我确定它们就在那里),它们会把字节码文件放在你选择的位置。
答案 5 :(得分:0)
您可以编写一个脚本来编译它们然后移动它们。类似的东西:
for i in `ls *.pyc`
do
mv $i $DEST_DIR
done
(可缩短为:
for i in *.pyc
do
mv $i $DEST_DIR
done
或者,令人惊讶的是
mv *.pyc $DEST_DIR
)