পাইথন 3 এ এটি পরীক্ষা করা হচ্ছে:
python -V
Python 3.6.5
Example1:
.
├── parent.py
├── start.py
└── sub
└── relative.py
- start.py
import sub.relative
- parent.py
print('Hello from parent.py')
- sub/relative.py
from .. import parent
যদি আমরা এটির মতো চালাই (কেবল পাইথনপথটি খালি রয়েছে তা নিশ্চিত করার জন্য):
PYTHONPATH='' python3 start.py
আউটপুট:
Traceback (most recent call last):
File "start.py", line 1, in <module>
import sub.relative
File "/python-import-examples/so-example-v1/sub/relative.py", line 1, in <module>
from .. import parent
ValueError: attempted relative import beyond top-level package
আমরা যদি আমদানি পরিবর্তন করি sub/relative.py
- sub/relative.py
import parent
যদি আমরা এটির মতো চালাই:
PYTHONPATH='' python3 start.py
আউটপুট:
Hello from parent.py
Example2:
.
├── parent.py
└── sub
├── relative.py
└── start.py
- parent.py
print('Hello from parent.py')
- sub/relative.py
print('Hello from relative.py')
- sub/start.py
import relative
from .. import parent
এটি চালান:
PYTHONPATH='' python3 sub/start.py
আউটপুট:
Hello from relative.py
Traceback (most recent call last):
File "sub/start.py", line 2, in <module>
from .. import parent
ValueError: attempted relative import beyond top-level package
যদি আমরা এতে আমদানি পরিবর্তন করি sub/start.py:
- sub/start.py
import relative
import parent
এটি চালান:
PYTHONPATH='' python3 sub/start.py
আউটপুট:
Hello from relative.py
Traceback (most recent call last):
File "sub/start.py", line 3, in <module>
import parent
ModuleNotFoundError: No module named 'parent'
এটি চালান:
PYTHONPATH='.' python3 sub/start.py
আউটপুট:
Hello from relative.py
Hello from parent.py
এছাড়াও মূল ফোল্ডার থেকে আমদানি করা ভাল
- sub/start.py
import sub.relative
import parent
এটি চালান:
PYTHONPATH='.' python3 sub/start.py
আউটপুট:
Hello from relative.py
Hello from parent.py