1

urlparseからインポートするプログラムで py2exe を使用しようとしていsix.moves.urllib_parseます。プログラムは次のとおりです。

# hello.py
from six.moves.urllib_parse import urlparse
print('hello world')

そして、ここに私の setup.py があります:

from distutils.core import setup
import py2exe
setup(console=['hello.py'])

hello.py を実行すると問題なく動作します。を使用して hello.py を exe にコンパイルするpython setup.py py2exeと、hello.exeファイルが生成されます。ただし、実行するhello.exeと、次のエラーが表示されます。

ImportError: No module named urlparse

Python 2.7 を使用しています。

Python 3.4 では、KeyError: 'six.moves'実行時にエラーが発生しますpython setup.py py2exe

これらのエラーの発生を防ぐにはどうすればよいですか?

4

2 に答える 2

1

問題は、py2exe が 6 経由でプロキシされるモジュールを検出しないため、それらがバンドルされていないことです。

問題のモジュール (urlparse) を setup.py のインクルードに追加するだけです。

  options={
      "py2exe": {
      ...
      "includes": ["urlparse"],
      ...

そうすれば、モジュールはパッケージ化され、six がそれをインポートしようとすると、機能します。

于 2015-04-28T21:25:56.360 に答える
0

py2exe は、この問題を修正する新しいバージョンを最近リリースしました。

Changes in version 0.9.2.2:
- Added support for six, cffi, pycparser, openssl.

このバージョンを使用すると、.exe を作成して正常に実行できました。

于 2014-10-25T01:33:49.440 に答える