web-dev-qa-db-ja.com

Pyinstallerを使用してディレクトリを含める

Pyinstallerのすべてのドキュメントでは、個々のファイルを含めることについて説明しています。ディレクトリを含めることは可能ですか、それとも、インクルードディレクトリをたどってインクルード配列を作成する関数を作成する必要がありますか?

24
Simon Knight

Tree()を使用して公式にサポートされているオプションについて誰も言及していないことに驚いています。

https://stackoverflow.com/a/20677118/2230844

https://pythonhosted.org/PyInstaller/advanced-topics.html#the-toc-and-tree-classes

16
denfromufa

Specファイルのa = Analysis()の後に以下を貼り付けて、ディレクトリを再帰的に走査し、ディレクトリ内のすべてのファイルをディストリビューションに追加します。

##### include mydir in distribution #######
def extra_datas(mydir):
    def rec_glob(p, files):
        import os
        import glob
        for d in glob.glob(p):
            if os.path.isfile(d):
                files.append(d)
            rec_glob("%s/*" % d, files)
    files = []
    rec_glob("%s/*" % mydir, files)
    extra_datas = []
    for f in files:
        extra_datas.append((f, f, 'DATA'))

    return extra_datas
###########################################

# append the 'data' dir
a.datas += extra_datas('data')
21
styts

globを使用するだけではどうですか?

from glob import glob
datas = []
datas += glob('/path/to/filedir/*')
datas += glob('/path/to/textdir/*.txt')
...

a.datas = datas
7
jdi

問題は想像以上に簡単です

これを試して: --add-data="path/to/folder/*;."

それが役に立てば幸い !!!

2