回答:
確認してくださいsys.executable
。
Pythonウィンドウで:
>>> import sys
>>> sys.executable
'C:\\Program Files (x86)\\ArcGIS\\Desktop10.2\\bin\\ArcMap.exe'
そして次にPython.exe
:
Python 2.7.3 (default, Apr 10 2012, 23:31:26) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.executable
'C:\\Python27\\ArcGIS10.2\\python.exe'
したがって、シンプルな方法if os.path.basename(sys.executable).lower() == 'python.exe'
で実行する必要があります。
sys.executable
サーバーツールとして実行した場合も、これは異なるものになると思います。arcpy.AddMessage("Executable: " + sys.executable)
確認のために発行するテストスクリプトを記述します。
質問を正しく理解できたら、スクリプトをスクリプトツールとして実行しているかどうかを確認してください。スクリプトツールとして実行している場合は、GetParameterAsTextを使用していくつかの変数を設定します。スタンドアロンで実行している場合は、いくつかのハードコードされた変数を使用します。これは正しいですか。その場合は、次のことを実行できます。
if len(sys.argv) > 1:
#Assign input and output parameters for script tool
par = arcpy.GetParameterAsText(0)
else:
# Hard coded parameters for testing
par = 'Hello'
sys.argvの長さをチェックすることで、スクリプトに渡されるパラメーターの数を決定しています。常に少なくとも1つのパラメーター(スクリプト自体の場所)があるため、渡されるパラメーターが複数ある場合は、ArcGISがパラメーターを送信していると想定できます(他の場所から引数を渡していない場合)。
par = arcpy.GetParameterAsText(0) if len(sys.argv) > 1 else 'Hello'
それを行う簡単な方法は次のようになります:
import arcpy
par = arcpy.GetParameterAsText(0)
if not par: #If no parameter has been passed, an empty string is returned
par = 'Hello'