代码之家  ›  专栏  ›  技术社区  ›  Corey Goldberg

编译的字节码文件(.pyc)能否在不同的目录中生成?[复制品]

  •  16
  • Corey Goldberg  · 技术社区  · 16 年前

    可能重复:
    Way to have compiled python files in a separate folder?

    当Python将模块编译为字节码时,它从.py文件生成.pyc文件。

    我的问题是,是否可以将这些.pyc文件写入与模块所在目录不同的目录?

    例如,我有一个很大的模块目录。我不想让它与.pyc文件混杂在一起,而是希望将源代码保存在目录中,并有一个子目录(如“bytecode”),其中存储了所有.pyc文件。

    这有可能吗?

    6 回复  |  直到 16 年前
        1
  •  14
  •   Community CDub    7 年前

    答案是” Way to have compiled python files in a seperate folder?

    简短回答: _ here .

    澄清:在3.2之前, 可以 根据BrianR.Bondy的建议编译字节码并将其放在其他地方,但是除非您实际从那里运行它(而不是从要保持原始状态的文件夹中运行),否则python仍将输出.py文件所在的字节码。

        2
  •  7
  •   Brian R. Bondy    16 年前

    检查 py_compile module 尤其是:

    py_compile.compile(file[, cfile[, dfile[, doraise]]])
    

    cfile是您感兴趣的参数。

    从上面的链接:

    …字节码被写入cfile, 默认为文件+“C”…

        3
  •  3
  •   Matthew van der Haas    12 年前

    我自己在找答案,找不到太多。但是,您可以将文件夹名前缀为新编译的文件名(需要先确保文件夹存在)。

    以下是一些适用于我的代码:

    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)
    
        4
  •  2
  •   tzot    16 年前

    如果“乱丢垃圾”确实是你的问题,你可以随时打包 .py , .pyc 和/或 .pyo .zip文件中的文件并将其附加到 sys.path .

        5
  •  0
  •   David Z    16 年前

    我似乎记得在某个地方读到过这样的话:这是不可能的,而且Python的人有理由不让它成为可能,尽管我不记得在哪里。

    编辑 :抱歉,我误解了这个问题-我的意思是,在默认情况下,不可能(我认为)配置python可执行文件将其字节码文件放在不同的目录中。您可以编写一个小的python编译器脚本(或者找到一个,我确信它们就在外面),将字节码文件放在您选择的位置。

        6
  •  0
  •   tzot    16 年前

    您可以编写一个脚本来编译它们,然后移动它们。类似:

    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
    

    )