2

I have following directory structure:

A
|
|--B--Hello.py
|
|--C--Message.py

Now if the path of root directory A is not fixed, how can i import "Hello.py" from B to "Message.py" in C.

1 Answer 1

2

At first I suggest to add empty __init__.py file into every directory with python sources. It will prevent many issues with imports because this is how the packages work in Python:

In your case it this should look like this:

A
├── B
│   ├── Hello.py
│   └── __init__.py
├── C
│   ├── Message.py
│   └── __init__.py
└── __init__.py

Let's say the Hello.py contains the function foo:

def foo():
    return 'bar'

and the Message.py tries to use it:

from ..B.Hello import foo

print(foo())

The first way to make it work is to let the Python interpreter to do his job and to handle package constructing:

~ $ python -m A.C.Message

Another option is to add your Hello.py file into list of known sources with the following code:

# Message.py file

import sys, os
sys.path.insert(0, os.path.abspath('..'))

from B.Hello import foo

print(foo())

In this case you can execute it with

~/A/C $ python Message.py
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.