web-dev-qa-db-ja.com

Py2Exe「不足しているモジュール」

私は自分のpythonプロジェクトをPy2Exeを使用してexeに変換しようとしています。cx_freezeが同じ3つの「欠落しているモジュール」と他の数十のモジュールについて文句を言うことは注目に値します。問題は、誰もこれを解決する方法を教えてくれません。

私はMSWindowsで構築していますXP 32ビット(VirtualBox)。

C:\Documents and Settings\Jason\Desktop\redstring2>python setup.py py2exe
running py2exe
running build_py
creating build
creating build\lib
copying redstring.py -> build\lib

  3 missing Modules
  ------------------
? readline                            imported from cmd, code, pdb
? win32api                            imported from platform
? win32con                            imported from platform
Building shared code archive 'dist\library.Zip'.
Copy c:\windows\system32\python34.dll to dist
Copy C:\Python34\DLLs\select.pyd to dist\select.pyd
Copy C:\Python34\DLLs\_ssl.pyd to dist\_ssl.pyd
Copy C:\Python34\DLLs\_ctypes.pyd to dist\_ctypes.pyd
Copy C:\Python34\DLLs\_lzma.pyd to dist\_lzma.pyd
Copy C:\Python34\DLLs\_hashlib.pyd to dist\_hashlib.pyd
Copy C:\Python34\DLLs\pyexpat.pyd to dist\pyexpat.pyd
Copy C:\Python34\DLLs\_socket.pyd to dist\_socket.pyd
Copy C:\Python34\DLLs\_bz2.pyd to dist\_bz2.pyd
Copy C:\Python34\DLLs\unicodedata.pyd to dist\unicodedata.pyd

私のsetup.pyは次のとおりです。

#!/usr/bin/python python

from setuptools import setup
import py2exe

setup(name="Redstring",
    version="2.0",
    description="REDundant STRING generator",
    author="MousePaw Labs",
    url="http://www.mousepawgames.com/",
    author_email="[email protected]",
    data_files=[("", ["redstring.png", "redstring_interface.glade"])],
    py_modules=["redstring"],
    )

これはPython 3.4プロジェクトでGTK + 3(Gladeでビルド)を使用しています。Ubuntuで桃色で実行され、python redstring.pyからですが、できます.exeにコンパイルするものを取得しません。

これまで、セットアップファイルのpy2exeオプションを介してプラットフォームをインポートするとともに、import platformfrom platform import win32apiの両方でredstring.pysetup.pyなどを試しました。

9
CodeMouse92

win32apiとwin32conは、MarkHammondのPython Windows拡張機能(別名pywin32)の一部です。readlineは、コンソールと対話するコードによって使用される(存在する場合)モジュールです。

Readlineとpywin32はどちらもオプションのモジュール/パッケージであり、絶対に必要というわけではありませんが、存在する場合に使用されます。

全体として-py2exeは、これらのモジュール/パッケージがexeに含まれるコードによって参照されていることに気付きます(これらのmod /パッケージを参照するモジュール(cmd、code、pdb、platform)についても言及しています)。これらのメッセージを安全に無視できるよりも正しく機能する場合は、スクリプトを「コンパイルされていない」形式でテストしたことを願っています。これらは単なる警告です。

実行可能ファイルがビルドされない理由は、setup()呼び出しに「console = ["redstring"]」または「windows = ["redstring"]」という行がないためです。

8
theller

したがって、これらのライブラリが最初からインストールされていないことが起こります。 Pythonは「バッテリーが含まれている」かもしれませんが、この程度ではありません。しかし、それを修正することは世界で最も明白なことではないため、私はこれに答えています(私自身も含まれています)。

Win32api(または正式に呼ばれているpywin32)を Sourceforge からインストールする必要があります(現時点では、ダウンロードボタンがREADME.txtにリンクしているため、ファイルを参照して最新バージョンを探します)。 win32conも同様です。 (残念ながら、現時点ではpipからpywin32をインストールすることはできません。)

readlineはWindowsと互換性がありません 、それでもそれを要求します。実際にはpyreadlineをインストールする必要があります。これはpip install pyreadlineから最も簡単です。

これで、py2exeのこれらすべての問題が解決するはずです。私はまだ問題を抱えていますが、それは別の問題なので、別の質問です。

8
CodeMouse92