Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 希罗库岛_Django_Heroku_Gdal_Geodjango_Geos - Fatal编程技术网

Django 希罗库岛

Django 希罗库岛,django,heroku,gdal,geodjango,geos,Django,Heroku,Gdal,Geodjango,Geos,我正在使用heroku开发django后端。我想让geoDjango在我的模型中使用空间特征。 我遵循了django和heroku文档中描述的所有步骤,但当我想在服务器上运行manage.py migrate或其他请求和命令时,仍然会出现错误: OSError: /app/.heroku/vendor/lib: cannot open shared object file: No such file or directory 我确实向bash检查了它是否正确,是的,我的供应商中没有lib目录。

我正在使用heroku开发django后端。我想让geoDjango在我的模型中使用空间特征。 我遵循了django和heroku文档中描述的所有步骤,但当我想在服务器上运行manage.py migrate或其他请求和命令时,仍然会出现错误:

OSError: /app/.heroku/vendor/lib: cannot open shared object file: No such file or directory
我确实向bash检查了它是否正确,是的,我的供应商中没有lib目录。我不太了解heroku上的buildpack和config,所以我不知道从哪里开始修复这个错误。 这是我的建筑背包:

  • heroku/python
  • 在我的.buildpacks中,我试图:

    https://github.com/cyberdelia/heroku-geo-buildpack.git#e1b845b
    https://github.com/heroku/heroku-buildpack-python.git
    
    我还尝试了不同的叉子,但根本无法建造

    我确实在我的设置中设置了路径:

    GEOS_LIBRARY_PATH = os.environ.get('GEOS_LIBRARY_PATH')
    GDAL_LIBRARY_PATH = os.environ.get('GDAL_LIBRARY_PATH')
    
    我有点迷路了,非常感谢你的帮助

    编辑: 因此,我尝试将堆栈降级为heroku-16(它是heroku-18)并进行构建,但当我要迁移它时,会显示一条新的错误消息:

    OSError: /app/.heroku/vendor/lib: cannot read file data: Is a directory
    
    当我尝试跟随时,我甚至无法构建并获得:

    -----> geos/gdal/proj app detected
       Using geos version: <?xml version="1.0" encoding="UTF-8"?>
       Using gdal version: <?xml version="1.0" encoding="UTF-8"?>
       Using proj version: <?xml version="1.0" encoding="UTF-8"?>
    /app/tmp/buildpacks/3174f4234c5151450fcaba5f50a050126498959c8209a7a6057230bfb29be2eaef3ae0098ab726ef807728f7b4792e31db50a2b89636ae181d9e71b03f2f83c1/bin/compile: line 82: [: too many arguments
    /app/tmp/buildpacks/3174f4234c5151450fcaba5f50a050126498959c8209a7a6057230bfb29be2eaef3ae0098ab726ef807728f7b4792e31db50a2b89636ae181d9e71b03f2f83c1/bin/compile: line 88: [: too many arguments
    /app/tmp/buildpacks/3174f4234c5151450fcaba5f50a050126498959c8209a7a6057230bfb29be2eaef3ae0098ab726ef807728f7b4792e31db50a2b89636ae181d9e71b03f2f83c1/bin/compile: line 94: [: too many arguments
    cp: target '/tmp/build_a7cfd7a56646fe632a93fc752b8ee03d/.heroku/vendor/lib/.' is not a directory
     !     Push rejected, failed to compile geos/gdal/proj app.
     !     Push failed
    
    检测到geos/gdal/proj应用程序 使用geos版本: 使用gdal版本: 使用项目版本: /app/tmp/buildpacks/3174F4234C5151450FCABA5F50A0501264959C8209A67A6057230BFB29BE2AEF3AE0098AB726EF807728F7B4792E31DB50A2B89636AE181D9E71B03F2F83C1/bin/compile:行82:[:参数太多 /app/tmp/buildpacks/3174F4234C5151450FCABA5F50A0501264959C8209A67A6057230BFB29BE2AEF3AE0098AB726EF807728F7B4792E31DB50A2B89636AE181D9E71B03F2F83C1/bin/编译:第88行:[:参数太多 /app/tmp/buildpacks/3174F4234C5151450FCABA5F50A0501264959C8209A67A6057230BFB29BE2AEF3AE0098AB726EF807728F7B4792E31DB50A2B89636AE181D9E71B03F2F83C1/bin/编译:第94行:[:参数太多 cp:target“/tmp/build_a7cfd7a56646fe632a93fc752b8ee03d/.heroku/vendor/lib/”不是目录 !推送被拒绝,未能编译geos/gdal/proj应用程序。 !推送失败
    所以我终于找到了解决方案,我在我的settings.py中设置了两个变量,正如在不同的教程和官方文档中所说的:

    GEOS_LIBRARY_PATH = os.getenv('GEOS_LIBRARY_PATH')
    GDAL_LIBRARY_PATH = os.getenv('GDAL_LIBRARY_PATH')
    
    但我不知道为什么这些变量是:

    /app/.heroku/vendor/lib
    
    这就是它不起作用的原因,所以我的解决方案就是为heroku硬编码我的路径:

    GEOS_LIBRARY_PATH = '/app/.heroku/vendor/lib/libgeos_c.so' if os.environ.get('ENV') == 'HEROKU' else os.getenv('GEOS_LIBRARY_PATH')
    GDAL_LIBRARY_PATH = '/app/.heroku/vendor/lib/libgdal.so' if os.environ.get('ENV') == 'HEROKU' else os.getenv('GDAL_LIBRARY_PATH')
    
    小心,你真的需要把“_c”改成“libgeos_c.so”,否则它就不行了


    我希望它能有所帮助

    因为无法将GeoDjango部署到Heroku,并出现类似错误。
    我花了一些时间才找到路

    自2020年11月起,您将需要此构建包:

    资料来源与指南: