5

cx-freezeを使用して、アプリの静的な自己完結型ディストリビューション(Spye Python Engine、www.spye.dk)を作成しようとしていますが、cx-freezeを実行すると次のように表示されます。

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]
    )

インクルードリストで不足しているモジュールを明確に指定していることに注意してください。

これを修正するにはどうすればよいですか?

4

2 に答える 2

0

モジュールの欠落は必ずしも問題ではありません。多くのモジュールは、さまざまなプラットフォームやさまざまなバージョンの Python に対応するために、さまざまなインポートを試みます。subprocessたとえば、 では次のコードを見つけることができます。

if mswindows:
    ...
    import _subprocess

cx_Freeze はこれを認識していないため_subprocess、Linux/Mac でも検索を試み、欠落していると報告します。それらを含めようとしているが、それらを見つけることができないため、それらを指定してincludesも何も変わりません。

とにかくファイルを作成するはずなので、それを実行して動作するかどうかを確認してください。

于 2012-04-18T10:22:06.643 に答える
-1

私は、あなたが単に+=リストに載ることはできないと思います。

おそらくlistメソッドを使用する必要があります。extendそうしないと、元のリストは変更されません。

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

編集:(@ThomasKに感謝)

+=正常に動作します-正しく動作しなかったオンラインPythonインタープリターしかありませんでした。(WindowsインストールにPythonがインストールされていないため、オンラインで確認する必要がありました)。

于 2012-04-18T08:01:27.767 に答える