如何在Google App Engine标准中启用GDAL之类的python 2.7库?当前,app引擎的lib-folder中有linux python-modules,但是当尝试通过端点运行代码时,app引擎会给出内部服务器错误:ImportError:没有名为_gdal的模块。我正在使用pygdal版本2.2.3.3。是否应在app引擎上也安装libgdal(用于pygdal),如果要安装,该怎么做?我按照以下语法these按照sudo pip install --target lib --requirement requirements.txt --ignore-installed
的指示,按照here的指示,将GDAL本地安装到lib文件夹中(在Windows10上使用ubuntu bash):请帮忙!
答案 0 :(得分:2)
来自What compiler can I use to build GDAL/OGR?
GDAL / OGR用ANSI C和C ++编写。可以使用all modern C/C++ compilers进行编译。
这意味着它与(第1代/ python 2.7)标准环境Pure Python沙盒要求不兼容:
Python运行时环境的所有代码必须是纯Python,并且 不包括任何C扩展名或其他必须编译的代码。
您可能想要查看灵活的环境。可能带有自定义运行时,请参见Up-to-date pip with AppEngine Python flex env?
答案 1 :(得分:1)
Google App Engine针对Python27的标准环境仅支持使用here列出的使用C扩展的一组特定的第三方库。 pygdal
不在列表中。
您可能想研究Python3标准运行时,尽管它位于beta中。它允许您安装任意的第三方库。
答案 2 :(得分:0)
修改this链接的答案我设法使GDAL在App Engine Flexible中工作。 我的dockerfile:
FROM gcr.io/google-appengine/python
RUN apt-get update && apt-get -y install libproj-dev libgdal-dev
RUN export CPLUS_INCLUDE_PATH=/usr/include/gdal
RUN export C_INCLUDE_PATH=/usr/include/gdal
RUN gdal-config --version
# Create a virtualenv for dependencies. This isolates these packages from
# system-level packages.
RUN virtualenv /env -p python2.7
# Setting these environment variables are the same as running
# source /env/bin/activate.
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
# Copy the application's requirements.txt and run pip to install all
# dependencies into the virtualenv.
ADD requirements.txt requirements.txt
RUN pip install -r requirements.txt
# Add the application source code.
ADD . /app
CMD gunicorn -t 120 -b :$PORT main:app
我的app.yaml文件:
runtime: custom
env: flex
entrypoint: gunicorn -t 120 -b :$PORT main:app
endpoints_api_service:
name: xxxxx.com
rollout_strategy: managed
beta_settings:
cloud_sql_instances: project:europe-north1:dbinstance
runtime_config:
python_version: 2
requirements.text-file:
pygdal==1.11.3.3