Py2exeを使用して、.pyスクリプトを実行可能ファイルに変換しようとしています。これまでにいくつかの問題がありましたが、それらは主に以下のセットアップファイルの「オプション」で対処されています。しかし今、私は解決策を見つけることができなかった問題を抱えており、他の人がこの同じ問題を抱えてそれを修正したかどうか疑問に思っています。
「python setup.py py2exe」を使用して以下のセットアップファイルを実行すると実行可能ファイルが提供されますが、実行すると「No module named builtins」というメッセージが表示されます。
このテーマで私が見つけることができる他の唯一の投稿は、組み込みがpython3のものであることを示しましたが、私は2.7を実行しています。
これに関するアドバイスやヒントを高く評価してください。
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import os
import matplotlib
matplotlibdatadir = matplotlib.get_data_path()
matplotlibdata = findall(matplotlibdatadir)
setup(
console=['DET14.py'],
options={
'py2exe': {
'packages' : ['matplotlib', 'pytz'],
'dll_excludes':['MSVCP90.DLL',
'libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll'],
'includes':['scipy.sparse.csgraph._validation',
'scipy.special._ufuncs_cxx']
}
},
# data_files=matplotlibdata_files
data_files=matplotlib.get_py2exe_datafiles()
)
エラーメッセージがどのように見えるかについての完全なリストは次のとおりです。
私はついにこれを機能させました。元のセットアップファイルにいくつかのエラーがあり、そのうちのいくつかは完全に愚かで、いくつかはセットアップコマンドのパラメーターがどのように機能するかについての理解不足を反映していることがわかりました。この後者のクラスのエラーは、いくつかのShelock Holmesスタイルの調査と単純で古い試行錯誤によってのみ解決されたことを付け加えます。つまり、セットアップコマンドのパラメーターの意味と使用方法を説明するドキュメントがまだ見つかっていないということです。誰かがその情報を持っていて、その情報に沿ってそれを渡すことができれば、とても感謝しています。
それを背景として、ここに答えがあります:
2つの基本的な問題がありました。
Aboeセットアップファイル内のパッケージのリストは非常に不完全でした。ルールが、プログラムが依存するすべてのパッケージをリストする必要があるかどうか、また、あなたが知らないパッケージに依存しているパッケージ(たとえば、pytzなど)をリストする必要があるかどうかはまだわかりません。しかし、それをやったとき、私はその時点で最終的に仕事に取り掛かることができる何かを持っていました。
上記の元の質問のエラーメッセージは、私のプログラムが「patsy」と呼ばれるものに依存しているように見えますが、それが何であるかわからなかったので混乱しましたが、statsmodels(whihcは私のプロジェクトの中核です)はpatsyに依存しているため、「パッケージ」リストに含める必要があります。
以下は、機能するようになったセットアップファイルです。修正の背後にあるロジックのこの説明が、同じ種類の問題に直面している他の人にとって役立つことを願っています。
from distutils.core import setup
import py2exe
from distutils.filelist import findall
import os
import matplotlib
matplotlibdatadir = matplotlib.get_data_path()
matplotlibdata = findall(matplotlibdatadir)
setup(
console=['DET14.py'],
options={
'py2exe': {
'packages' : ['matplotlib', 'pytz','easygui',\
'statsmodels','pandas','patsy'],
'dll_excludes':['MSVCP90.DLL',
'libgdk-win32-2.0-0.dll',
'libgobject-2.0-0.dll',
'libgdk_pixbuf-2.0-0.dll'],
'includes':['scipy.sparse.csgraph._validation',
'scipy.special._ufuncs_cxx']
}
},
data_files=matplotlib.get_py2exe_datafiles()
)
「pip install future」を使用してこの問題を解決したこともわかりました
私はここから情報を得ました: https://askubuntu.com/questions/697226/importerror-no-module-named-builtins
あなたの質問につまずいた私のような他のユーザーのためにこれが明確になることを願っています
ランニング pip install future
私のためにこのエラーを修正しました。 Python2.7との互換性のために、パッケージfutureをsetup.pyのinstall_requiresに追加する必要があります。
nosetests
もmatplotlibなしでは失敗しますが、依存関係が意味をなすのでmatplotlibを追加するかどうかはわかりません。