2012-04-05 10 views
1

私のプログラムはPythonで書かれています。これは7つのファイルと、私がカスタムパッケージをインポートする3つのファイルに書かれています。私のプログラムはexeにビルドできません。 pyinstaller 1.5.1とpy2exeを試しました。私は見つけることができるすべてのチュートリアルに従いましたが、成功しませんでした。 exeファイルを作成して実行しようとするたびに、カスタムパッケージが見つからないというエラーメッセージが表示されます。私は、完全なパッケージをexeファイルに組み込むことができなかったと思います。助けてください。pythonパッケージをexeにビルドする方法

from distutils.core import setup 
import py2exe, sys, os 
sys.argv.append('py2exe') 

mfcfiles = [os.path.join(mfcdir, i) for i in ["mfc90.dll", "mfc90u.dll", "mfcm90.dll", "mfcm90u.dll", "Microsoft.VC90.MFC.manifest"]] 

data_files = [("Microsoft.VC90.MFC", mfcfiles),] 

setup(
    data_files = data_files, 
    options = {'py2exe': {'optimize': 2}}, 
    windows = [{'script': "LoadFilesGUI.py"}], 
    zipfile = "shared.lib", 
) 

別:

from distutils.core import setup 
import py2exe, sys, os 

sys.argv.append('py2exe') 

setup(
    options = {'py2exe': {'optimize': 2}}, 
    windows = [{'script': "LoadFilesGUI.py"}], 
    zipfile = None, 
    console=['LoadFilesGUI.py'], 
) 
+0

あなたはそれを行うことができます。再試行する。あなたがしたら、あなたが試したファイル構造とpackager設定の詳細をお知らせください。 – j13r

+0

はい、動作するはずです。私はあなたのsetup.pyとあなたのプロジェクト構造が何であるかを示す必要があることに同意します – jdi

+0

どのような種類のファイルですか?カスタムパッケージの種類pyinstallerとpy2exeのエラーは何ですか?他の質問にもっと多くの余裕を残して質問してください! –

答えて

2

「カスタムパッケージ」とは、アプリケーションを構成するカスタムのPythonモジュールを意味します。これは私のプロジェクトでは、例えば

setup( 
    windows = [{'script': "LoadFilesGUI.py"}], 
    data_files = data_files, 
    zipfile = None, 
    options = { 
     'py2exe': { 
      'optimize': 2, 
      'bundle_files': 1, 
      'includes' : [], 
     } 
    }, 
) 

:私は、セットアップのオプション()手動でそれらが自動的に検出されていない場合には、含まれるべきPythonモジュールを指定するために呼び出す「を含む」を使用しようと提案するかもしれませんPyQt4を使用して、私のこのようなルックスが含まれています

options={ 
    "py2exe": { 
     "includes" : ['sip','PyQt4.QtCore','PyQt4.QtGui', 
         'PyQt4.QtNetwork','PyQt4.QtWebKit'] 
    } 
} 

あなたのsetup.pyスクリプトの残りの部分はかなり標準のようです。あなたのインクルードされたモジュールがPYTHONPATHに含まれていることを確認してください.PYTHONPATHはプロジェクトに関連しているか、明示的にパスに追加されています。

もし、あなたがあなたのコメントで述べたように、MyPackageは、プロジェクト内のパッケージである、あなたが望む:'includes' : ['MyPackage']

これはまだあなたにエラーを与える場合、問題は、プロジェクトの構造を持つことができパッケージ、またはあなたのPYTHONPATHで再度

0

cx_freezeが答えです。

私の経験から、最も信頼できる選択肢です。 場合によっては依存関係が失われることもありますが、見つからないものを見つけたら手動で簡単に追加できます。

+2

このケースでは本当に答えはありません。あなたは彼が別のパッケージを使うことを提案しているだけです。私はPyQt4ベースのPythonプロジェクトのためにWindows上でpy2exeを使用しました。確かにOPが間違っていることがあります。 – jdi

+0

cx_Freezeはバイナリパッケージから通常はOOBで動作し、クロスプラットフォームであり、Python 2.3から3.2まで利用できますが、py2exeはPython 2.6のみで動作します。 さらに、distutilsスクリプトをカスタマイズすると、柔軟性が向上します(http://cx-freeze.sourceforge.net/cx_Freeze.htmlを参照)。 無料でpy2exeを試してみてください。ただし、それを使用しない方が良いツールがあれば教えてください。 – Gabriel

+0

PS:これは短いチュートリアルです:http://www.blog.pythonlibrary.org/2010/08/12/a-cx_freeze-tutorial-build-a-binary-series/ – Gabriel

関連する問題