ত্রুটিআমদানি ত্রুটি: কোনো পরিচিত প্যারেন্ট প্যাকেজ ছাড়াই আপেক্ষিক আমদানির চেষ্টা করা হয়েছে পাইথনে অনেক ডেভেলপারকে বিভ্রান্ত করে। এটি ঘটে যখন আপনি একটি ফাইল চালান যা একটি প্যাকেজের অংশ হিসাবে পরিবর্তে স্ক্রিপ্ট হিসাবে আপেক্ষিক আমদানি ব্যবহার করে। কেন এটি ঘটে এবং কীভাবে এটি ঠিক করা যায় তা এখানে।
📋 Table of Contents
- কেন এটা ঘটে
- ঠিক 1: -m
- দিয়ে একটি মডিউল হিসাবে চালান এটি আপেক্ষিক আমদানি ব্যবহার করে প্যাকেজ কোড চালানোর সঠিক উপায়। মনে রাখবেন আপনি প্রজেক্ট রুট থেকে চালান এবং ডট ব্যবহার করেন, স্ল্যাশ নয়।
- ফিক্স 3: একটি সঠিক এন্ট্রি পয়েন্ট যোগ করুন
- ফিক্স 4: এটি একটি সঠিক ইনস্টলযোগ্য প্যাকেজ করুন
- আপেক্ষিক বনাম পরম আমদানি বোঝা
- __init__.py প্রয়োজনীয়তা
- দ্রুত সিদ্ধান্ত নির্দেশিকা
- উন্নয়নের জন্য একটি প্যাকেজ ফাইল চালাচ্ছেন?
- প্রশ্ন: কেন আপেক্ষিক আমদানিগুলি কিছু ফাইলে কাজ করে কিন্তু অন্যদের নয়? || || একটি ফাইল যখন ফাইলের অংশ হিসাবে কাজ করে, কিন্তু যখন ফাইলটি সরাসরি কাজ করে, তখন A: একটি অংশ হিসাবে কাজ করে as a script. The same file can work when imported and fail when run with
- run it as a module with
কেন এটা ঘটে
আপেক্ষিক আমদানি (from .module import x) শুধুমাত্র তখনই কাজ করে যখন পাইথন জানে যে ফাইলটি একটি প্যাকেজের অংশ। আপনি যখন একটি ফাইল সরাসরি ( ) চালান, তখন পাইথন এটিকে একটি উচ্চ-স্তরের স্ক্রিপ্ট হিসাবে বিবেচনা করে যার কোনো প্যারেন্ট প্যাকেজ নেই — তাই আপেক্ষিক আমদানি ব্যর্থ হয়।python myfile.py আমদানিতে আপেক্ষিক হতে কোন প্যাকেজ নেই..সেটআপ যা এটিকে ট্রিগার করে
ঠিক 1: -m
# Project structure
myproject/
├── mypackage/
│ ├── __init__.py
│ ├── main.py
│ └── helper.py
# main.py uses a relative import
# from .helper import do_something
# 🐛 Running directly fails
python mypackage/main.py
# ImportError: attempted relative import with no known parent package
দিয়ে একটি মডিউল হিসাবে চালান এটি আপেক্ষিক আমদানি ব্যবহার করে প্যাকেজ কোড চালানোর সঠিক উপায়। মনে রাখবেন আপনি প্রজেক্ট রুট থেকে চালান এবং ডট ব্যবহার করেন, স্ল্যাশ নয়।
# Run from the PROJECT ROOT (parent of mypackage) using -m
cd myproject
python -m mypackage.main
# The -m flag runs it as a module within the package,
# so Python knows the parent package and relative imports work
ফিক্স 2: সম্পূর্ণ আমদানি ব্যবহার করুন
ফিক্স 3: একটি সঠিক এন্ট্রি পয়েন্ট যোগ করুন
# Instead of relative imports:
# from .helper import do_something # relative
# Use absolute imports:
from mypackage.helper import do_something # absolute
# Absolute imports work whether run as a script or module,
# as long as the package is on the Python path
ফিক্স 4: এটি একটি সঠিক ইনস্টলযোগ্য প্যাকেজ করুন
# Create a run script at the project root (outside the package)
# myproject/run.py
from mypackage.main import main
if __name__ == '__main__':
main()
# Run it from the root — absolute imports resolve correctly
python run.py
আপেক্ষিক বনাম পরম আমদানি বোঝা
# pyproject.toml
[project]
name = "mypackage"
version = "0.1.0"
[project.scripts]
mypackage = "mypackage.main:main"
# Install in editable mode
pip install -e .
# Now run via the entry point — imports work correctly
mypackage
# Or: python -m mypackage.main
__init__.py প্রয়োজনীয়তা
# Relative imports (need a parent package)
from . import sibling_module # same package
from .helper import func # module in same package
from ..other_package import thing # parent package
# Absolute imports (need package on path)
from mypackage.helper import func
from mypackage.subpackage.mod import thing
# Rule of thumb: absolute imports are more explicit and robust.
# Use them unless you have a specific reason for relative imports.
দ্রুত সিদ্ধান্ত নির্দেশিকা
# For a directory to be a package (enabling relative imports),
# it typically needs an __init__.py file:
mypackage/
├── __init__.py # makes mypackage a package (can be empty)
├── main.py
└── helper.py
# Without __init__.py, Python may treat it as a namespace package
# (works in modern Python but can cause confusion). For clarity,
# include __init__.py in packages that use relative imports.
উন্নয়নের জন্য একটি প্যাকেজ ফাইল চালাচ্ছেন?
- ব্যবহার করুন প্রকল্পের মূল থেকে
python -m package.moduleসবসময় কাজ করে এমন আমদানি চান? - পরম আমদানি ব্যবহার করুন (একটি বাস্তব প্রকল্প তৈরি করা?
from mypackage.x import y) - এটিকে একটি এন্ট্রি পয়েন্ট সহ একটি ইনস্টলযোগ্য প্যাকেজ করুনশুধু একটি সাধারণ স্ক্রিপ্ট?
- আপেক্ষিক আমদানি ব্যবহার করবেন না — পরম ব্যবহার করবেন না বা সবকিছুকে একটি ফাইলে রাখুনপ্রায়শই জিজ্ঞাসিত প্রশ্নগুলি
প্রশ্ন: কেন আপেক্ষিক আমদানিগুলি কিছু ফাইলে কাজ করে কিন্তু অন্যদের নয়? || || একটি ফাইল যখন ফাইলের অংশ হিসাবে কাজ করে, কিন্তু যখন ফাইলটি সরাসরি কাজ করে, তখন A: একটি অংশ হিসাবে কাজ করে as a script. The same file can work when imported and fail when run with
— because direct execution has no parent package.
Q: Should I use relative or absolute imports?python file.pyA: Absolute imports are generally recommended — they’re explicit, work in more situations, and are clearer about where things come from. Use relative imports only within a package when it improves readability, and understand they require running as a module.
Q: What does the -m flag actually do?
A: It runs a module as part of its package, setting up the package context so relative imports resolve.
tells Python “run main as a module inside mypackage,” giving it the parent package it needs.
Q: Do I always need __init__.py?python -m mypackage.mainA: In modern Python, namespace packages work without it, but including
makes your package explicit and avoids ambiguity, especially when using relative imports. It’s good practice to include it.
Q: My IDE runs it fine but the terminal fails. Why?__init__.pyA: IDEs often set the working directory and Python path to the project root and may run files as modules. Replicate that in the terminal: run from the project root with
, or configure your path/entry point to match.
Conclusionpython -m package.module“Attempted relative import with no known parent package” means you’re running a package file directly as a script, so relative imports have no parent package to resolve against. The fixes:
run it as a module with
from the project root, switch to absolute imports (), or create a proper entry point at the project rootpython -m mypackage.main. For robust projects, make it an installable package একটি এন্ট্রি পয়েন্ট সহ সাধারণভাবে, পরম আমদানি পছন্দ করুন – তারা স্পষ্ট এবং আপনার কোড স্ক্রিপ্ট বা মডিউল হিসাবে কাজ করে।from mypackage.helper import x. For robust projects, make it an installable package একটি এন্ট্রি পয়েন্ট সহ সাধারণভাবে, পরম আমদানি পছন্দ করুন – তারা স্পষ্ট এবং আপনার কোড স্ক্রিপ্ট বা মডিউল হিসাবে কাজ করে।. For robust projects, make it an installable package একটি এন্ট্রি পয়েন্ট সহ সাধারণভাবে, পরম আমদানি পছন্দ করুন – তারা স্পষ্ট এবং আপনার কোড স্ক্রিপ্ট বা মডিউল হিসাবে কাজ করে।
🔗 Share this article
✍️ Leave a Comment