Python 2.6からPython 2.5を起動しようとしています。これは、私が使用しようとしているコンパイル済みライブラリ(GDAL)は、別のプログラム(ArcGIS)で配布されているPythonのバージョンではサポートされていないためです。Pythonサブプロセスの起動にランチャーによって異なる動作が発生する
ここに私がしようとしていることがあります。 Pythonの2.6でmain.py
ファイル:
import subprocess
p = subprocess.Popen(['C:\OSGeo4W\gdal_python_exec.bat', 'X:\\local\\import_tests.py'])
gdal_python_exec.bat
はまた、いくつかの環境変数を設定しながら、私が欲しいのPythonの2.5バージョンをアップ発射Windowsバッチスクリプトです:
import_tests.py
@echo off
set OSGEO4W_ROOT=C:\OSGeo4W
PATH=%OSGEO4W_ROOT%\bin;%PATH%
for %%f in (%OSGEO4W_ROOT%\etc\ini\*.bat) do call %%f
@echo on
@C:\OSGeo4W\bin\python.exe %1
:
try:
from osgeo import gdal
raw_input('Imported! (Press enter)')
except Exception, e:
print(e)
raw_input('Failed! (Press enter)')
私はpython.exe main.py
(そのようDOSコマンドラインでmain.py
を実行しますPythonのArcの2.6バージョン)では、問題なく動作します。しかし、同じスクリプトを使って、メインアプリケーションの中の「ツールボックス」として追加してそこから起動すると、import_tests.py
ファイル内のGDALライブラリのDLLが見つかりません!
subprocess
が別のPythonインタプリタを起動しているモジュールの場合、どうしてですか?何が起きているのかについてのアイデアはありますか?
を編集します。os.environ['PATH']
の変数が両方の呼び出しで同じであることを確認できます。
Edit2:C:\Program Files\ArcGIS...\Bin
ディレクトリには、私のpythonバインディングと互換性のないdllが含まれていました。 Windowsは最初にcwdを検索し、そのdllをロードしようとしましたが、失敗し、「dllが見つかりません」というエラーが報告されました。
メインアプリケーションにはどのようなGUIを使用していますか? gdalはどんなdllを読み込もうとしますか?いずれかが正常に読み込まれますか? – Velociraptors
メインGUIはArcGISです。私が知る限り、 'gdal'は' gdal.dll'を読み込もうとしますが、どうやって見つけられるのか分かりません。どうすれば確認できますか? – Rich
[プロセスエクスプローラ](http://technet.microsoft.com)を使用できます。com/en-us/sysinternals/bb896653)を使用して、特定のプロセスがロードしたDLLを確認します。この場合、おそらくArcGISとすべてのPythonプロセスをチェックしたいと思うでしょう。あなたの元の問題を考えれば、ArcGISがPythonではなく*何かを中毒させている可能性が最も高いと言えます。 – Velociraptors