ভাইবোন প্যাকেজগুলি থেকে আমদানি সম্পর্কিত প্রশ্নেরও আমি একই ধরণের উত্তর পোস্ট করেছি। আপনি এটি এখানে দেখতে পারেন ।
সমাধান ছাড়া sys.path
হ্যাক
সারসংক্ষেপ
- কোডটিকে একটি ফোল্ডারে মুড়ে দিন (যেমন
packaged_stuff
)
setup.py
যেখানে আপনি সেটআপললস সেটআপ ব্যবহার করেন সেখানে স্ক্রিপ্ট তৈরি করুন ()।
- পাইপ প্যাকেজটি সম্পাদনযোগ্য অবস্থায় ইনস্টল করুন
pip install -e <myproject_folder>
- ব্যবহার করে আমদানি করুন
from packaged_stuff.modulename import function_name
সেটআপ
আমি প্রশ্নের মত একই ফোল্ডার কাঠামো ধরে নিই
.
└── ptdraft
├── __init__.py
├── nib.py
└── simulations
├── __init__.py
└── life
├── __init__.py
└── life.py
আমি .
রুট ফোল্ডারটি কল করি এবং আমার ক্ষেত্রে এটি অবস্থিতC:\tmp\test_imports
।
ধাপ
1) অ্যা setup.py
মূল ফোল্ডারে
এর বিষয়বস্তু setup.py
সহজভাবে হতে পারে
from setuptools import setup, find_packages
setup(name='myproject', version='1.0', packages=find_packages())
মূলত "যে কোনও" setup.py
কাজ করবে। এটি কেবলমাত্র একটি ন্যূনতম কাজের উদাহরণ।
2) ভার্চুয়াল পরিবেশ ব্যবহার করুন
আপনি যদি ভার্চুয়াল পরিবেশের সাথে পরিচিত হন, একটি সক্রিয় করুন এবং পরবর্তী পদক্ষেপে যান। ভার্চুয়াল পরিবেশের ব্যবহার করা হয় না একেবারে প্রয়োজনীয়, কিন্তু তারা হবে সত্যিই দীর্ঘ রান আপনাকে সাহায্য (আপনি চেয়ে বেশি 1 প্রকল্পের চলমান আছে ..)। সর্বাধিক প্রাথমিক পদক্ষেপগুলি (রুট ফোল্ডারে চালিত)
- ভার্চুয়াল env তৈরি করুন
- ভার্চুয়াল env সক্রিয় করুন
. /venv/bin/activate
(লিনাক্স) বা ./venv/Scripts/activate
(উইন)
এ সম্পর্কে আরও জানতে, গুগল "পাইথন ভ্যুচুয়ালেনভ টিউটোরিয়াল" বা এর অনুরূপ। আপনার সম্ভবত কখনও তৈরি করা, সক্রিয়করণ এবং নিষ্ক্রিয় করা ছাড়া অন্য কোনও আদেশের প্রয়োজন নেই।
একবার আপনি ভার্চুয়াল পরিবেশ তৈরি এবং সক্রিয় করার পরে, আপনার কনসোলটি বন্ধনীতে ভার্চুয়াল পরিবেশের নাম দেওয়া উচিত
PS C:\tmp\test_imports> python -m venv venv
PS C:\tmp\test_imports> .\venv\Scripts\activate
(venv) PS C:\tmp\test_imports>
3) পিপ আপনার প্রকল্প সম্পাদনাযোগ্য স্থানে ইনস্টল করুন
আপনার শীর্ষ স্তরের প্যাকেজটি myproject
ব্যবহার করে ইনস্টল করুন pip
। কৌশলটি হ'ল ইনস্টলটি করার সময় -e
পতাকাটি ব্যবহার করা । এইভাবে এটি সম্পাদনযোগ্য অবস্থায় ইনস্টল করা হবে এবং .py ফাইলগুলিতে করা সমস্ত সম্পাদনা স্বয়ংক্রিয়ভাবে ইনস্টল করা প্যাকেজটিতে অন্তর্ভুক্ত হবে।
রুট ডিরেক্টরিতে, চালান
pip install -e .
(বিন্দুটি নোট করুন, এটি "বর্তমান ডিরেক্টরি" হিসাবে দাঁড়িয়েছে)
আপনি এটি ব্যবহার করে ইনস্টল করাও দেখতে পারেন pip freeze
(venv) PS C:\tmp\test_imports> pip install -e .
Obtaining file:///C:/tmp/test_imports
Installing collected packages: myproject
Running setup.py develop for myproject
Successfully installed myproject
(venv) PS C:\tmp\test_imports> pip freeze
myproject==1.0
4) mainfolder
প্রতিটি আমদানি প্রিপেন্ড করে আমদানি করুন
এই উদাহরণে, mainfolder
হবে ptdraft
। এটির সুবিধাটি রয়েছে যে আপনি অন্যান্য মডিউল নামের সাথে পাইথন সংঘর্ষে দৌড়াবেন না (পাইথন স্ট্যান্ডার্ড লাইব্রেরি বা তৃতীয় পক্ষের মডিউল থেকে)।
ব্যবহারের উদাহরণ
nib.py
def function_from_nib():
print('I am the return value from function_from_nib!')
life.py
from ptdraft.nib import function_from_nib
if __name__ == '__main__':
function_from_nib()
লাইফ.পি চালানো
(venv) PS C:\tmp\test_imports> python .\ptdraft\simulations\life\life.py
I am the return value from function_from_nib!