2

Please note: This works fine locally but only makes an issue when working on azure online function.

Error:

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

Imports:

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

Requirements:

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

What I have tried : az account clear & az login. If i write : func azure functionapp publish air-temperature

This results in the error : 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

I am not using docker integration so i cant do the --build-native-deps

I am using azure repositories to push it into the azure repo and it is build seemlessly without errors on dependencies or anything. But if i run it online through portal it give this error as mentioned at the top.

I have also tried using the venv and env on python and did pip freeze > requirements.txt.

2 Answers2

1

you can mitigate the issue using --no-bundler while publishing.

Here is the explanation.

during a general publish using --build-native-deps, we try to use Pyinstaller to bundle all the custom dependencies specified in your requirements.txt together with our runner (worker). We started to do this in an effort to improve startup performance that you get after publishing to Azure Functions. Although, this process has been flaky and we are planning on moving away from it.

--no-bundler flag bypasses that bundling process. So, we do not use Pyinstaller or any such module to do temporary optimizations. The caveat is that you may experience slight linger delay (cold start) when hitting your API end-point.

Sajeetharan
  • 216,225
  • 63
  • 350
  • 396
0

For me the option --build remote helps, when publishing the function:

func azure functionapp publish air-temperature --build remote

When using the option --no-bundler I get this error:

Warning: Argument --no-bundler is deprecated and a no-op. Python function apps are not bundled anymore.

Matthias M
  • 12,906
  • 17
  • 87
  • 116