2012-04-18 7 views
5

私は、しかし、私のアプリ(SPYE Pythonのエンジン、www.spye.dk)の静的な自己完結型の分布を作成するために、CX-凍結を使用しようとしています含まれても、モジュールを含めることができません、それは言う:CX-凍結は、私はCX-凍結を実行したときに、具体的

Missing modules: 
? _md5 imported from hashlib 
? _scproxy imported from urllib 
? _sha imported from hashlib 
? _sha256 imported from hashlib 
? _sha512 imported from hashlib 
? _subprocess imported from subprocess 
? configparser imported from apport.fileutils 
? usercustomize imported from site 

これは私のsetup.pyである:

#!/usr/bin/env python 
from cx_Freeze import setup, Executable 

includes = ["hashlib", "urllib", "subprocess", "fileutils", "site"] 
includes += ["BaseHTTPServer", "cgi", "cgitb", "fcntl", "getopt", "httplib", "inspect", "json", "math", "operator", "os", "os,", "psycopg2", "re", "smtplib", "socket", "SocketServer", "spye", "spye.config", "spye.config.file", "spye.config.merge", "spye.config.section", "spye.editor", "spye.framework", "spye.frontend", "spye.frontend.cgi", "spye.frontend.http", "spye.input", "spye.output", "spye.output.console", "spye.output.stdout", "spye.pluginsystem", "spye.presentation", "spye.util.html", "spye.util.rpc", "ssl", "stat,", "struct", "subprocess", "sys", "termios", "time", "traceback", "tty", "urllib2", "urlparse", "uuid"] 

includefiles=[] 
excludes = [] 
packages = [] 
target = Executable(
    # what to build 
    script = "spye-exe", 
    initScript = None, 
    #base = 'Win32GUI', 
    targetDir = r"dist", 
    targetName = "spye.exe", 
    compress = True, 
    copyDependentFiles = True, 
    appendScriptToExe = False, 
    appendScriptToLibrary = False, 
    icon = None 
    ) 

setup(
    version = "0.1", 
    description = "No Description", 
    author = "No Author", 
    name = "cx_Freeze Sample File", 

    options = {"build_exe": {"includes": includes, 
       "excludes": excludes, 
       "packages": packages 
       #"path": path 
       } 
      }, 

    executables = [target] 
    ) 

私ははっきりリストを含んで不足しているモジュールを指定することに注意してください。

これを修正するにはどうすればよいですか?リスト上の

答えて

-1
私は推測

、次のことができないだけで+=。私は持っていた - (@ThomasKありがとう)

正常に動作します+=

includes.extend(["BaseHTTPServer", "<rest of your modules>"]) 

EDIT:それ以外の場合は、元のリストは変更されません -

あなたはおそらくリスト方式extendを使用する必要がありますオンラインで正しく動作しなかったPythonインタプリタ。 (私はPythonを私のWindowsインストールにインストールしないので、私はオンラインでチェックしなければならなかった)。

+0

右、私は今ことを修正しましたが、私はまだ不足しているモジュールの同じリストを取得します。直し方? – ervingsb

+0

私はsetup.pyをここで更新しました:http://paste.adora.dk/P2357.txt、 "python setup.py build | grep -A12 Missing"の出力はここにあります:http://paste.adora .dk/P2356.txt – ervingsb

+0

私はちょうどあなたの問題をGoogleで検索し、[libcryptoなど](http://www.mail-archive.com/[email protected]/msg00664.html)に相関すると思われます(ただし、解決策はありませんでした) - おそらくcx_freezeは非Python依存関係を処理しませんか? – BergmannF

0

ミッシングモジュールは必ずしも問題ではありません:モジュールの多くは、異なるプラットフォームやPythonの異なるバージョンに対応するためにさまざまな輸入品を試してみてください。 subprocessでは、たとえば、あなたがこのコードを見つけることができます。

if mswindows: 
    ... 
    import _subprocess 

cx_Freezeはこのことを知っていないので、それは同様のLinux/Mac上で_subprocessを見つけようと、不足しているとして、それを報告します。 includesにそれらを指定しても、それを含めることはできますが、見つけられないので何も変わりません。

とにかくファイルを作成するので、それを実行しているし、それが動作するかどうか見てみてください。