0

So below I have is my file structure:

/
    api.py       
    app.py       
code/
    data_api/
        weather_data/
            get_data_dir/
                get_data.py
            master_call_dir/
                master_call.py

My current problem is that I'm importing master_call.py from inside app.py I do this with the following code:

-- app.py

import sys
sys.path.append('./code/data_api/weather_data/master_call_dir')

from master_call import master_call_interface as master_call

Importing master_call itself works perfectly fine, the issue is that inside off master_call I import get_data.py. I do this with the following code:

-- master_call.py

import sys
sys.path.append("../get_data_dir")

from get_data import get_data_module

When printing out sys.path I can see ../get_data_dir inside of it but Python still isn't able to find the get_data.py file in /get_data_dir.

Does anyone know how to fix this?

(there is an __init__.py file in every directory, I removed it here for readability)

1 Answer 1

1

So I figured it out. The problem is while the directory of the master_call.py file is /code/data_api/weather_data/master_call the current working directory (CWD) is / since that is where app.py is located.

To fix it we simply fetch absolute file path in each python script with

current_path = os.path.dirname(os.path.realpath(__file__)).replace('\\', '/')

and pre-pend it to any file path we're appending with sys.path.append

So it'd look like this in practice:

import sys
import os
current_path = os.path.dirname(os.path.realpath(__file__)).replace('\\', '/')

sys.path.append(f'{current_path}./code/data_api/weather_data/master_call_dir')

from master_call import master_call_interface as master_call
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.