2017-08-15 6 views
0

をロードすることができない:pyInstallerの:私はそうのような設定ファイルをインポートして、非常に基本的なフラスコのアプリケーション持って設定ファイル

app.config.from_pyfile('config.py') 

を私が作成するために、すべての輸入品を分析しpyInstallerのを、使用して、このフラスコアプリケーションをバンドルしようとしています依存関係のリストconfig.pyは明示的にインポートされていないので、私はそれを追加のデータファイルとして追加する必要があると思います。 this SO question当たりのIは、次のことを試してみた:

pyinstaller --onefile --add-data "config.py:config.py" 

私は私のバンドル実行可能ファイルを実行すると、しかし、私は次のエラーを取得する:

:私は明示的に設定ファイルをインポートするとき

FileNotFoundError: [Errno 2] Unable to load configuration file (No such file or directory): 'Users/Johnny/config.py' 

すべてが正常に動作します

from config import * 

しかし、なぜ私の最初の方法が機能していないのかわかりません。私はmacOS 10.12.5とpython 3.4.5を実行しています。

答えて

1

これを実証しました。この設定ファイルが置かれている場所を正確に(run-time information)アプリがバンドルされたときに変化する、指定する必要があります。

import sys, os 

if getattr(sys, 'freeze', False): 
    # running as bundle (aka frozen) 
    bundle_dir = sys._MEIPASS 
else: 
    # running live 
    bundle_dir = os.path.dirname(os.path.abspath(__file__)) 

app.config.from_pyfile(os.path.join(bundle_dir, 'config.py')) 

またpyInstallerの経由バンドルを生成するコマンドは次のようになります。

グラブ
pyinstaller --onefile --add-data './config.py:.' 

config.pyし、バンドルされたアプリの最上位に追加します(adding data files)。

関連する問題