2

py2exe を使用して、Python スクリプトをスタンドアロンの実行可能ファイルに変換しようとしています。スクリプトは主に、Tkinter GUI を備えた arcpy を使用して構築されています。

setup.py スクリプトは次のとおりです。

from distutils.core import setup
import py2exe

script = r"pathtoscript.py"

options = {'py2exe':{
    "includes": ['arcpy', 'arcgisscripting'],
    "packages": ['arcpy', 'arcgisscripting'],
    "dll_excludes": ["mswsock.dll", "powrprof.dll"]
    }}

setup(windows=[script], options=options)

setup.py を実行すると、期待どおりに .exe が作成されますが、実行可能ファイルを実行しようとすると、次のエラーが発生します。

Traceback (most recent call last):
  File "autolim.py", line 7, in <module>
  File "arcpy\__init__.pyc", line 21, in <module>
  File "arcpy\geoprocessing\__init__.pyc", line 14, in <module>
  File "arcpy\geoprocessing\_base.pyc", line 14, in <module>
  File "arcgisscripting.pyc", line 12, in <module>
  File "arcgisscripting.pyc", line 10, in __load
ImportError: DLL load failed: The specified module could not be found.

私は python 2.7 と arcgis 10.1 を使用しています。役立つ情報を忘れていないかどうかお気軽にお尋ねください。

実行可能ファイルを正しく動作させるために何をする必要があるか教えてもらえますか?

どうもありがとう!

4

2 に答える 2

0

私は同じ問題を抱えていました...

ユーザーのマシンには python/arcpy がインストールされているため、arcpy スクリプトは data_files ディレクトリにあります。

setup(windows=[script], data_files=[('scripts', glob(r'/path/to/scripts/*.py')], options=options)

次に、subprocess.Popenを使用してそれらを呼び出します

import subprocess
subprocess.Popen(r'python "%s\scripts\autolim.py"' % self.basedir)

Popen はノンブロッキングであるため、arcpy スクリプトの実行中に GUI がフリーズすることはありません。

arcpy スクリプトの print ステートメントを印刷する場合は、次のように変更します。

p = subprocess.Popen(r'python "%s\scripts\autolim.py"' % self.basedir, stdout=subprocess.PIPE)

while True:
    line = p.stdout.readline()
    if not line:
        break
    sys.stdout.write(line)
    sys.stdout.flush()
于 2014-11-27T01:36:07.923 に答える