Django中的arcpy无法运行

时间:2019-06-20 01:50:45

标签: django arcpy

我有一个使用arcpy模型的ArcGIS脚本。我想将其与Django结合使用。该脚本已成功在控制台上运行,但是,在使用Django运行时,我发现arcpy函数未运行。因此,我对其进行了简单的测试,并获得了相同的结果。

test.py

import arcpy
import os

def test_arcpy():
    tempFolder = arcpy.env.scratchFolder
    tempGDBPath = os.path.join(tempFolder, 'test.gdb')
    arcpy.env.overwriteOutput = True
    if not arcpy.Exists(tempGDBPath):
        arcpy.AddMessage('create..')
        arcpy.CreateFileGDB_management(tempFolder, 'test.gdb')
    return arcpy.Exists(tempGDBPath)

views.py

from django.http import HttpResponse
from . import test
def t(request):
    msg = str(test.test_arcpy())
    return HttpResponse(msg)

如果在控制台中运行test.py,则返回True。但是如果在django中运行,则始终返回false。如果我不能解决它,我将无法在django中编写更困难的脚本。你能帮助我吗? 我在Flask app with ArcGIS, Arcpy does not run中发现了类似的问题,但该问题没有解决方案。

2 个答案:

答案 0 :(得分:0)

我认为我可以使用子流程模型在控制台中运行arcpy脚本,然后将控制台消息返回到django函数。 但是我真的很想知道arcpy是否可以与django一起运行。

答案 1 :(得分:0)

我在Flask中遇到了与您相同的问题。

我检查了arcpy中的源代码,发现在我从Flask触发arcgisscripting.pydarcpy.Exists()文件中有错误。我失去了任何提示。在ESRI在线博客上搜索了一些案例之后,我当然发现这是arcpy中的错误。所以我建议你:

  1. 尝试使用更高版本的arcpy。(我当前的版本是10.1)
  2. 尝试在控制台中运行代码
  3. 尝试运行from multiprocessing import Queue, Process之类的消息队列
  4. 尝试不使用该功能。就我而言,我避免使用arcpy.Exists()
  5. 尝试在arcServer中使用64位arcpy。