6

python3.2プロジェクトからcxfreezeバイナリを実行すると、次のランタイムエラーが発生します。

/project/dist/project/distutils/__init__.py:13: UserWarning: The virtualenv distutils package at %s appears to be in the same location as the system distutils?
Traceback (most recent call last):
  File "/home/chrish/.virtualenvs/project/lib/python3.2/distutils/__init__.py", line 19, in <module>
    import dist
ImportError: No module named dist

distutilsこれに対応して、cxfreeze出力の欠落しているモジュールセクションにいくつかのエントリがあります。

? dist imported from distutils
? distutils.ccompiler imported from numpy.distutils.ccompiler
? distutils.cmd imported from setuptools.dist
? distutils.command.build_ext imported from distutils
? distutils.core imported from numpy.distutils.core
...

私は、distutilsをモジュールとして強制的に含めることを試みました。これは、メインのpythonファイルにインポートすることと、cxfreezesetup.pyに次のように追加することの両方によって行われました。

options = {"build_exe": {"packages" : ["distutils"]} },

どちらのアプローチも機能しませんでした。どういうわけかvirtualenvを壊したようです[distutilsは基本的であり、distutilsの場所に関する警告であるため]、クリーンなvirtualenvで繰り返すと、問題が再現されました。

$VIRTUAL_ENV/build/cx-freeze/setup.py installcx-freezeはpipに正しくインストールされないため、実行してインストールしたことは注目に値するかもしれません。

4

5 に答える 5

2

私のコメントを要約する:

virtualenvののコピーはdistutils、cx_Freezeを混乱させるいくつかの奇妙なことをしています。簡単な回避策は、virtualenvの外部でフリーズして、distutilsのシステムコピーを使用することです。

Ubuntuでは、python3Python2と3がうまく共存します。Python3で何かを行うために使用します。たとえば、Python3の下にcx_Freezeをインストールしますpython3 setup.py install

于 2013-01-12T13:31:18.660 に答える
0

しばらく経ちましたが、同じ問題に遭遇しました。distutils パッケージをローカルの Python ライブラリから virtualenv ライブラリにコピーすることで解決できました。副作用についてはまだわかりません。すべてがうまくいくようです。

于 2015-09-01T12:17:55.063 に答える
0

1 つの問題は、venv の distutils/__init__.py が暗黙の相対インポート (正しい from distutils import dist の代わりに import dist) を実行しようとすることです。そのため、最初に修正する必要があります。venv はどのように作成されましたか? distutils/__init__.py はどこから来たのですか?

于 2013-01-11T00:51:53.900 に答える