5

以前は pyinstaller を使用して、twisted を実行可能ファイルとしてアプリを取得しようとしていましたが、実行時に次のエラーが発生しました。

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
    exec code in m.__dict__
  File "client_test.py", line 2, in <module>
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.0.0-py2.7-linux-x86_64.egg/twisted/__init__.py", line 53, in <module>
    _checkRequirements()
  File "/usr/local/lib/python2.7/dist-packages/Twisted-13.0.0-py2.7-linux-x86_64.egg/twisted/__init__.py", line 37, in _checkRequirements
    raise ImportError(required + ": no module named zope.interface.")
ImportError: Twisted requires zope.interface 3.6.0 or later: no module named zope.interface.

そこで、cx_freeze を使ってみたのですが、この例のように使っても全く同じエラーが出てしまいます。'namespace_packages': ['zope']

easy_install実行可能ファイルを作成している場所から、python インタープリターを開いてzope.interface を正常にインポートpip install -U zope.interfaceできます。

setup.pyこれがcx_freezeの私のものです:

import sys
from cx_Freeze import setup, Executable

# Dependencies are automatically detected, but it might need fine tuning.
build_exe_options = {"excludes": ["tkinter"],
             'namespace_packages':['zope'],
            'append_script_to_exe':True
}

setup(  name = "exetest",
        version = "0.1",
        description = "My first executable",
        options = {"build_exe": build_exe_options},
        executables = [Executable("client_test.py")])

EDIT 1:__init__.py私も空白のファイルを下に置いてみたことを忘れていましたがzope.interface、それも役に立ちませんでした。

編集 2:ビルド フォルダーの library.zip 内で cx_freeze を使用すると、zope.interface がそこにあり、モジュールが欠落しているとは思いませんが、それでもImportError

これは、cx_freeze の出力からのものです。

Missing modules:
? _md5 imported from hashlib
? _sha imported from hashlib
? _sha256 imported from hashlib
? _sha512 imported from hashlib
? builtins imported from zope.schema._compat
? ctypes.macholib.dyld imported from ctypes.util
? dl imported from OpenSSL
? html imported from twisted.web.server
? netbios imported from uuid
? ordereddict imported from zope.schema._compat
? queue imported from twisted.internet.threads
? twisted.python._epoll imported from twisted.internet.epollreactor
? twisted.python._initgroups imported from twisted.python.util
? urllib.parse imported from twisted.web.server
? win32wnet imported from uuid
? wsaccel.utf8validator imported from autobahn.utf8validator
? zope.i18nmessageid imported from zope.schema._messageid
? zope.testing.cleanup imported from zope.schema.vocabulary

編集 3:これが私の実行可能ファイルからの sys.path 出力です (で短縮されます..)

['../build/exe.linux-x86_64-2.7/client_test',
 '../build/exe.linux-x86_64-2.7',
 '../build/exe.linux-x86_64-2.7/client_test.zip',
 '../build/exe.linux-x86_64-2.7/library.zip']

zope.interface直接インポートしたときに表示されるエラーは次のとおりです。

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/cx_Freeze/initscripts/Console.py", line 27, in <module>
    exec code in m.__dict__
  File "client_test.py", line 3, in <module>
  File "/usr/local/lib/python2.7/dist-packages/zope.schema-4.3.2-py2.7.egg/zope/__init__.py", line 1, in <module>
    __import__('pkg_resources').declare_namespace(__name__)
ImportError: No module named pkg_resources

pkg_resourcescx_freeze setup.py のインクルードに追加した後、プログラムが実行されました

4

4 に答える 4

5

cx_Freeze の setup.py に追加pkg_resourcesします。includes

于 2013-07-16T19:48:22.967 に答える
0

インクルードに「pkg_resources」を追加して cx_freeze スクリプトを実行すると、最初の 2 行だけが取得され、ここに残ります。

実行中のビルド

build_exe の実行

于 2013-12-06T10:40:35.007 に答える