如何安装&x27;python3dev';在谷歌应用程序引擎上使用';pymatting_aot.aot';

如何安装&x27;python3dev';在谷歌应用程序引擎上使用';pymatting_aot.aot';,python,python-3.x,google-app-engine,google-cloud-platform,Python,Python 3.x,Google App Engine,Google Cloud Platform,我正试图在Google App Engine上运行一个Python 3.8脚本,它使用的是pymatting\u aot.aot 当在本地Ubuntu机器上运行此脚本时,它不会出现任何问题,但当我尝试在GAE上运行它时,我遇到以下错误: Traceback (most recent call last): File "/layers/google.python.pip/pip/lib/python3.8/site-packages/pymatting_aot/cc.py"

我正试图在Google App Engine上运行一个Python 3.8脚本,它使用的是
pymatting\u aot.aot

当在本地Ubuntu机器上运行此脚本时,它不会出现任何问题,但当我尝试在GAE上运行它时,我遇到以下错误:

Traceback (most recent call last):
  File "/layers/google.python.pip/pip/lib/python3.8/site-packages/pymatting_aot/cc.py", line 21, in <module>
    import pymatting_aot.aot
ModuleNotFoundError: No module named 'pymatting_aot.aot'
requirements.txt

-f https://download.pytorch.org/whl/torch_stable.html
numpy==1.19.4
torch==1.7.0+cpu
torchvision==0.8.1+cpu
pymatting==1.1.1
scikit-image==0.17.2
waitress==1.4.4
scipy==1.5.4
hsh==1.1.0
flask==1.1.2
filetype==1.0.7
matplotlib==3.1.1
tqdm==4.51.0
requests==2.25.0
fastapi==0.62.0
Pillow==8.0.1
skimage==0.0
uvicorn==0.11.6
gunicorn==20.0.4
python-multipart==0.0.5
问题依然存在,
你知道如何让它工作吗?

试着在GAE内部安装
pymatting

pip3 install pymatting

如果你还没有解决,试试看

apt-get install python3.8-dev

问题是pymatting_aot.aot实际上不需要导入,需要先编译

您可以通过先在代码中导入pymatting_aot.cc或将此导入合并到app engine的Dockerfile中来编译模块,以便容器附带此预编译的共享对象库

下面是一个快速概述,以了解它是如何工作的(或者更确切地说,是在编译后如何工作的):

测试:

~ docker run -it --rm test:latest
Python 3.8.7 (default, Dec 22 2020, 18:46:25)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymatting_aot.aot
>>>

我已经满足了
要求:./env/lib/python3.7/site-packages(1.1.1)中的pymatting
你也可以提供requirements.txt吗?@Jaroslav添加了需求文件。我得到
E:无法找到python3.8-dev包E:无法通过glob'python3.8-dev'找到任何包E:无法通过regex'python3.8-dev'找到任何包。
仍然没有解决。我在GAE控制台中使用了
导入pymatting_aot.cc
,它修复了这个问题直接使用
gunicorn-w 8-k uvicorn.workers.UvicornWorker服务名称:app
运行API时。对于已部署的版本,我在py脚本的顶部添加了
import pymatting_aot.cc
,并对其进行了部署,但仍然存在
没有名为'pymatting_aot.aot'的模块的问题
,而且我使用的是没有docker的标准环境。我想当GAE试图在访问py文件之前安装requirement
pymatting
时,问题就来了。好吧,在这种情况下,环境不会让CC编译共享对象库。我想我有点困惑了,尽管你在使用flex env,因为你说你可以在GAE控制台中运行命令,您是如何ssh/连接到标准环境的?我的意思是从Google Cloud页面右上角激活的
Google Cloud Shell
。Cloud Shell是完全独立的环境,与应用程序引擎容器中运行的内容没有任何关系。它确实有一个编译器,因此可以编译库。appengine std env没有。我明白了,有没有办法在GAE标准env中运行
pymatting_aot.cc
,或者以某种方式添加到需求文件中。
root@dcda6f2673cb:/# pip install pymatting

Collecting pymatting
  Downloading PyMatting-1.1.2-py3-none-any.whl (48 kB)
     |████████████████████████████████| 48 kB 1.4 MB/s
Collecting numba!=0.49.0
  Downloading numba-0.52.0-cp38-cp38-manylinux2014_x86_64.whl (3.2 MB)
     |████████████████████████████████| 3.2 MB 2.9 MB/s
Requirement already satisfied: setuptools in /usr/local/lib/python3.8/site-packages (from numba!=0.49.0->pymatting) (51.1.0)
Collecting llvmlite<0.36,>=0.35.0
  Downloading llvmlite-0.35.0-cp38-cp38-manylinux2010_x86_64.whl (25.3 MB)
     |████████████████████████████████| 25.3 MB 10.9 MB/s
Collecting numpy>=1.16.0
  Downloading numpy-1.19.4-cp38-cp38-manylinux2010_x86_64.whl (14.5 MB)
     |████████████████████████████████| 14.5 MB 11.3 MB/s
Collecting pillow>=5.2.0
  Downloading Pillow-8.0.1-cp38-cp38-manylinux1_x86_64.whl (2.2 MB)
     |████████████████████████████████| 2.2 MB 3.8 MB/s
Collecting scipy>=1.1.0
  Downloading scipy-1.5.4-cp38-cp38-manylinux1_x86_64.whl (25.8 MB)
     |████████████████████████████████| 25.8 MB 12.0 MB/s
Installing collected packages: numpy, llvmlite, scipy, pillow, numba, pymatting
Successfully installed llvmlite-0.35.0 numba-0.52.0 numpy-1.19.4 pillow-8.0.1 pymatting-1.1.2 scipy-1.5.4

root@dcda6f2673cb:/# python
Python 3.8.7 (default, Dec 22 2020, 18:46:25)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.

>>> import pymatting_aot.aot
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pymatting_aot.aot'

>>> import pymatting_aot.cc
Failed to import ahead-of-time-compiled modules.
This is expected on first import.
Compiling modules and trying again.
This might take a minute.
Successfully imported ahead-of-time-compiled modules.

>>> import pymatting_aot.aot
>>> pymatting_aot.aot
<module 'pymatting_aot.aot' from '/usr/local/lib/python3.8/site-packages/pymatting_aot/aot.cpython-38-x86_64-linux-gnu.so'>
~ cat Dockerfile
FROM python:3.8
RUN pip install pymatting && python -c 'import pymatting_aot.cc'
~ docker run -it --rm test:latest
Python 3.8.7 (default, Dec 22 2020, 18:46:25)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import pymatting_aot.aot
>>>