আমি আইপিথন অটোরলোড এক্সটেনশন ব্যবহার করার পরামর্শ দেব ।
./manage.py shell
In [1]: %load_ext autoreload
In [2]: %autoreload 2
এবং এখন থেকে সমস্ত আমদানি করা মডিউলগুলি মূল্যায়নের আগে সতেজ করা হবে।
In [3]: from x import print_something
In [4]: print_something()
Out[4]: 'Something'
In [5]: print_something()
Out[5]: 'Something else'
%load_ext autoreload
কমান্ডের আগে কিছু আমদানি করা থাকলেও কাজ করে ।
./manage.py shell
In [1]: from x import print_something
In [2]: print_something()
Out[2]: 'Something'
In [3]: %load_ext autoreload
In [4]: %autoreload 2
In [5]: print_something()
Out[5]: 'Something else'
%aimport
কমান্ড এবং 3 অটোরলোড কৌশলগুলি দিয়ে কিছু আমদানি রিফ্রেশ করা থেকেও রোধ করা সম্ভব :
% অটোরলোড
- এখনই স্বয়ংক্রিয়ভাবে সমস্ত মডিউল (% এম্পোর্ট দ্বারা বাদ দেওয়াগুলি ব্যতীত) পুনরায় লোড করুন।
% অটোরলোড 0
- স্বয়ংক্রিয় পুনরায় লোডিং অক্ষম করুন।
% অটোরলোড 1
- টাইপযুক্ত পাইথন কোডটি কার্যকর করার আগে প্রতিবার% এম্পোর্টের সাথে আমদানি করা সমস্ত মডিউল পুনরায় লোড করুন।
% অটোরলোড 2
- পাইথন কোড টাইপ করা কার্যকর করার আগে প্রতিবার সমস্ত মডিউল পুনরায় লোড করুন (% অ্যাম্পোর্ট বাদে বাদে) time
% এম্পোর্ট
- স্বয়ংক্রিয়ভাবে আমদানি করা হবে বা আমদানি করা হবে না এমন তালিকা মডিউলগুলি।
% এম্পোর্ট foo
- 'Foo' মডিউল আমদানি করুন এবং এটি% অটোরলোড 1 এর জন্য স্বয়ংক্রিয় লোড হওয়ার জন্য চিহ্নিত করুন
% এম্পোর্ট -ফু
- স্বয়ংক্রিয় লোড না হওয়ার জন্য মডিউল 'foo' চিহ্নিত করুন।
এটি সাধারণত আমার ব্যবহারের পক্ষে ভাল কাজ করে তবে কয়েকটি ক্যাভেটাস রয়েছে:
- কোড অবজেক্টগুলি প্রতিস্থাপন সবসময় সফল হয় না: একটি ক্লাসে @ প্রপার্টি একটি সাধারণ পদ্ধতিতে বা সদস্যের ভেরিয়েবলের কোনও পদ্ধতিতে পরিবর্তন করা সমস্যার কারণ হতে পারে (তবে কেবল পুরানো অবজেক্টগুলিতে)।
- মডিউলটি পুনরায় লোড হওয়ার আগে মুছে ফেলা (যেমনঃ বানর-প্যাচিংয়ের মাধ্যমে) সরিয়ে ফেলা ফাংশনগুলি আপগ্রেড করা হয় না।
- সি এক্সটেনশন মডিউলগুলি পুনরায় লোড করা যায় না এবং তাই স্বয়ংক্রিয় লোড করা যায় না।