2016-05-31 3 views
0

ftfyをインポートしてPythonスクリプトアプリケーションで使用すると、問題は全くありません。Python:pyinstaller、cx_freeze、またはp2exeを使用してexeファイルにコンパイルすると、ftfyによってアプリケーションクラッシュが発生する

pyinstaller,cx_freezeまたはp2exeを使用してバイナリexeファイルにコンパイルすると、アプリケーションは問題なくコンパイルされますが、アプリケーションを実行するたびにクラッシュします。

char_classes.datファイルがchardata.pyから見つからないためクラッシュする理由があります。ここで

は私がpyInstallerのでコンパイルした後に私のアプリを実行し、それがクラッシュしたときに私が得る一般的な出力です:

File "C:\WinPy34\python-3.4.3.amd64\Lib\site-
packages\PyInstaller\loader\pyimod03_importers.py", line 363, in load_module exec(bytecode, module.dict)

File "C:\WinPy34\python-3.4.3.amd64\Lib\site-packages\ftfy\chardata.py", line 141, in CHAR_CLASS_STRING = zlib.decompress(resource_string(name, 'char_classes.dat')).decode('ascii')

File "C:\WinPy34\python-3.4.3.amd64\Lib\site-packages\pkg_resources__init__.p y", line 1173, in resource_string self, resource_name

File "C:\WinPy34\python-3.4.3.amd64\Lib\site-packages\pkg_resources__init__.p y", line 1605, in get_resource_string

return self._get(self._fn(self.module_path, resource_name))

File "C:\WinPy34\python-3.4.3.amd64\Lib\site-packages\pkg_resources__init__.p y", line 1683, in _get return self.loader.get_data(path) File "C:\WinPy34\python-3.4.3.amd64\Lib\site-packages\PyInstaller\loader\pyimo d03_importers.py", line 445, in get_data with open(path, 'rb') as fp:

FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\BILLTH~1\Ap pData\Local\Temp\_MEI64282\ftfy\char_classes.dat'

d2e returned -1

この出力は、そのファイルがあるにもかかわらずchar_classes.datファイルを見つけることができないと言います - site-packagesディレクトリ内のftfyモジュール内で、日に日に明白です。

+0

:pyInstallerのを使用して

、あなたはおそらく、興味深いドキュメントUsing Data Files from a Moduleのセクションを見つけ、そしてあなたのAnalysis呼び出しに次の引数を追加しますこれに? –

答えて

0

ログによれば、探しているファイルはC:\Users\BILLTH~1\AppData\Local\Temp\_MEI64282\ftfy\char_classes.datです。

一時ディレクトリなので、アーカイブが抽出された場所であると思います。これらのコンパイラツールは、ソースと抽出されたPythonインタプリタを一時フォルダに抽出し、いくつかの環境変数を設定し、適切なパラメータでPythonを実行する、自動解凍可能なzipアーカイブを作成します。

したがって、あなたのchar_classes.datファイルがツールによって埋め込まれていなかったと思います。おそらく、ツールには依存性が見えないからです。私はこれが古いですけど、あなたは解決策を見つけた場合は思っていた

datas=[('ftfy\char_classes.dat', 'ftfy')] 
+0

@madprog ...あなたのご意見ありがとうございます。私はすでに、Pyinstaller仕様ファイルのデータとバイナリの両方を変更しようとしました。それはうまくいかなかった。 char_classes.datファイルはバイナリファイルです。 –

関連する問題