Search code examples
pythonlocustmodulenotfounderror

ModuleNotFoundError : No module named with locust


When I try to import external library of my project in my locust python file, each time I have the error "ModuleNotFoundError : No module name '...'.

Apparently is not clear but locust is installed and works. I have a task to make REST API call and it's ok. But I need to make some action in the init method coming from external file of my project

Example :

I want to import the method "generateILogsToken" in my locust file from _Global.py file

FILE : getWalletInfoLocust.py

from Phoenix.APIs._Global import generateIlogsToken
from locust import HttpUser, task

class ApiUser(HttpUser):

    def __init__(self, environment):
        print("__init__" + generateIlogsToken())
        super().__init__(environment)


    @task
    def profile(self):
        url = "/restapi/json/v1/resources"
        self.client.get(url, verify=False, headers={'AUTHTOKEN': 'xxxxx'})

Error generated with the command locust -f getWalletInfoLocust.py

...
    from Phoenix.APIs._Global import generateIlogsToken
ModuleNotFoundError: No module named 'Phoenix'

I have this issue for any method imported from external file of my project. When I'm used behave or other, no isse. It's only with locust.

Thx


Solution

  • I am not sure, but I think the problem could be related to the fact that you launch your program in a folder that is not the root folder of your project.

    Let's say you have a directory tree like this:

    project_directory
    │   getWalletInfoLocust.py  
    │   ... 
    └───Phoenix 
    │   │   ...   
    │   └───APIs   
    │   │   │   _Global.py
    │   │   │   ...
    

    When launching the command, python will look for the Phoenix folder from the folder you are launching python from.

    To be sure the module is found, you should launch locust -f getWalletInfoLocust.py from the directory that I called "project_directory" in my example, otherwise python could not find the module Phoenix.

    Alternatively you can add your root directory to sys.path in your file, like this:

    import sys, os
    sys.path.append('path/to/project_directory')