Estoy escribiendo un script que llama a una función que escribí en otro script. No puedo acceder a la ruta env de python instalada por lo que debo guardar mis scripts en otra ubicación. Para conseguir que un script llame a otro, tengo que usar sys.path.append(r "pathToPythonFiles") y luego importar el script como un módulo y luego llamar a la función.
Principal script:
import sys
import arcpy
import os
sys.path.append(r"N:\Common\Script\Drivers")
import CO_181_ExStMetal as sMetal
sMetal.exportMetal()
script con función invocable:
def exportMetal():
# Create program variables
# workspace
mxd = arcpy.mapping.MapDocument(r"C:\RS_Data\Workspace\Batch_Carts_CO_181\Batch_Carts_CO_181.mxd")
# dataframe
df = arcpy.mapping.ListDataFrames(mxd,"Layers")[0]
# field for SearchCursor
numField = 'Route'
# feature layer for cursor
lyr = arcpy.mapping.Layer(r"C:\RS_Data\Workspace\Batch_Carts_CO_181\gisdb\layers.gdb\Service_Location")
# create empty set to hold unique route values
rtVals = set()
# Create searchCursor
cursor = arcpy.SearchCursor(lyr)
for row in cursor:
rtVals.add(row.getValue(numField))
scenario = max(rtVals)
path = r"S:\Shared\RouteSmart\Automated_BIC_and_Carts\CO_181\Standish_Yard\Metal"
outNameCarts = os.path.join(path, ("Metal_Report.pdf"))
print outNameCarts
rlfCarts = r"N:\Common\Report Templates\CO_181_Metal.rlf"
reportCarts = arcpy.mapping.ExportReport(lyr,rlfCarts,outNameCarts, "USE_RLF")
if __name__ == '__main__':
exportMetal()
Este es el error:
Traceback (most recent call last):
File "C:\Python27\ArcGIS10.2\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py", line 323, in RunScript
debugger.run(codeObject, __main__.__dict__, start_stepping=0)
File "C:\Python27\ArcGIS10.2\Lib\site-packages\pythonwin\pywin\debugger\__init__.py", line 60, in run
_GetCurrentDebugger().run(cmd, globals,locals, start_stepping)
File "C:\Python27\ArcGIS10.2\Lib\site-packages\pythonwin\pywin\debugger\debugger.py", line 654, in run
exec cmd in globals, locals
File "N:\Common\Script\Drivers\sys_test.py", line 1, in <module>
import sys
File "N:\Common\Script\Drivers\CO_181_ExStMetal.py", line 10, in exportMetal
import arcpy
NameError: global name 'arcpy' is not defined
He probado a importar arcpy en la parte superior de script 2 antes de definir exportMetal() como global y luego también localmente dentro de la función. También he probado después de if nombre \==' principal ':
Me preocupa que una vez que pongo la ruta del sistema en el script el programa no puede encontrar arcpy que está instalado en la ruta env de python.