Отсутствующие зависимости в функции Python Azure - PullRequest
0 голосов
/ 05 ноября 2019

Обратите внимание: локально работает нормально, но создает проблемы только при работе с онлайн-функцией Azure.

Ошибка:

Result: Failure
Exception: ModuleNotFoundError: No module named 'pandas'
Stack:   File "/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/dispatcher.py", line 242, in _handle__function_load_request
    func_request.metadata.entry_point)
  File "/azure-functions-host/workers/python/3.6/LINUX/X64/azure_functions_worker/loader.py", line 66, in load_function
    mod = importlib.import_module(fullmodname)
  File "/usr/local/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/home/site/wwwroot/HttpExample/__init__.py", line 20, in <module>
    import pandas as pd

Импорт:

import importlib



import logging

import azure.functions as func

import urllib.request
from zipfile import ZipFile
import json
import csv
import os


import pathlib
import os.path
from pathlib import Path
import time
import pandas as pd
from datetime import datetime
from dateutil.relativedelta import relativedelta

Требования:

adal==1.2.2
antlr4-python3-runtime==4.7.2
applicationinsights==0.11.9
argcomplete==1.10.0
azure-cli-command-modules-nspkg==2.0.3
azure-cli-core==2.0.76
azure-cli-nspkg==3.0.4
azure-cli-profile==2.1.5
azure-cli-telemetry==1.0.4
azure-common==1.1.23
azure-functions==1.0.4
azure-mgmt-resource==4.0.0
azure-nspkg==3.0.2
bcrypt==3.1.7
certifi==2019.9.11
cffi==1.13.2
chardet==3.0.4
colorama==0.4.1
cryptography==2.8
humanfriendly==4.18
idna==2.8
isodate==0.6.0
jmespath==0.9.4
knack==0.6.3
msrest==0.6.10
msrestazure==0.6.2
numpy==1.17.3
oauthlib==3.1.0
pandas==0.25.3
paramiko==2.6.0
portalocker==1.5.1
pycparser==2.19
Pygments==2.4.2
PyJWT==1.7.1
PyNaCl==1.3.0
pyOpenSSL==19.0.0
python-dateutil==2.8.1
pytz==2019.3
PyYAML==5.1.2
requests==2.22.0
requests-oauthlib==1.2.0
six==1.12.0
tabulate==0.8.5
urllib3==1.25.6

Что я пробовал: az account clear & az login. Если я напишу: func azure functionapp publish air-temperature

Это приводит к ошибке: There was an error restoring dependencies. ERROR: cannot install cryptography-2.8 dependency: binary dependencies without wheels are not supported. Use the "--build remote" or "--build-native-deps" option to automatically build and configure the dependencies using a Docker container. More information at https://aka.ms/func-python-publish

Я не использую интеграцию с докером, поэтому я не могу сделать --build-native-deps

Я использую репозитории Azure, чтобы вставить его в репозиторий Azure, и он создается без ошибок на зависимости или чего-либо еще. Но если я запустил его через портал, он выдаст эту ошибку, как указано выше.

Я также попытался использовать venv и env на python и сделал pip freeze> needs.txt.

1 Ответ

1 голос
/ 05 ноября 2019

вы можете смягчить проблему, используя --no-bundler при публикации.

Вот explanation.

во время обычной публикации с использованием --build-native-deps, мы пытаемся использовать Pyinstaller для объединения всехПользовательские зависимости, указанные в твоем файле require.txt вместе с нашим бегуном (работником). Мы начали это делать, чтобы повысить производительность при запуске, которую вы получаете после публикации в функциях Azure. Хотя этот процесс был ненадежным, и мы планируем отойти от него.

- флаг no-bundler обходит этот процесс объединения. Таким образом, мы не используем Pyinstaller или любой другой модуль для временной оптимизации. Предостережение заключается в том, что при достижении конечной точки API вы можете испытывать небольшую задержку (холодный старт).

...