Search code examples
pythonazureazure-functionsgql

azure functions module errors using python


I'm new to azure so excuse my lack of knowledge about the platform. I'm currently trying to run and deploy an azure function using python. these modules are currently found in my requirements.txt file

azure-functions
graphqlclient
requests
gql
asyncio
aiohttp

I run the following command pip install -r requirements.txt to install them, but for some reason, some modules cannot be found. for example the json module. import json works fine with any other python program. but when i try and add it to the requirements.txt file and run this command pip install -r requirements.txt i get the following error

ERROR: Could not find a version that satisfies the requirement json (from versions: none)
ERROR: No matching distribution found for json

i tried adding a version, but that did not solve my issue. thats only half my problem, i decided to ignore this problem for now and try to work with the modules that are working properly in the .txt file. moving on to my __init__.py file which is a timer trigger i have the following imports

import datetime
import logging
from graphqlclient import GraphQLClient
import requests
import asyncio
from gql import gql, Client
from gql.transport.aiohttp import AIOHTTPTransport

import azure.functions as func  

but when i try and run my function i get the following error

Exception: ModuleNotFoundError: No module named 'gql.transport.aiohttp'

Can someone please explain these module erros? all these modules work fine when i run them from any other python program, so the problem seems to be from azure.

Thanks


Solution

  • I run the following command pip install -r requirements.txt to install them, but for some reason, some modules cannot be found. for example the json module.

    Json is a standard library in python there's no need to install it.

    Just include it in your python script as the following:

    import json
    

    Exception: ModuleNotFoundError: No module named 'gql.transport.aiohttp'

    According to my test results, the default version of gql installed using the pip install -r requirements.txt command is 2.0.0.

    If you use from gql.transport.aiohttp import AIOHTTPTransport to import AIOHTTPTransport, you need to install 3.x.x.

    So this error is caused by version incompatibility.

    Solution:

    Please install the 3.x.x version of gql, you can uninstall the installed gql first, and then reinstall the new version of gql:

    pip uninstall gql
    
    pip install gql==3.0.0a5
    

    enter image description here

    I did some tests and the function can run normally.