যখনই সম্পর্কিত কোড উপাদানগুলি আমদানি করা হয় তখনই .pyc ফাইলগুলি উত্পন্ন হয় এবং যদি সম্পর্কিত কোড ফাইলগুলি আপডেট করা থাকে তবে আপডেট হয়। .Pyc ফাইলগুলি মুছে ফেলা হলে সেগুলি স্বয়ংক্রিয়ভাবে পুনরায় জেনারেট হবে। তবে, সংশ্লিষ্ট কোড ফাইলগুলি মুছে ফেলা হলে সেগুলি স্বয়ংক্রিয়ভাবে মোছা হয় না ।
এটি ফাইল-স্তরের রিফ্যাক্টরগুলির সময় কিছু সত্যই মজাদার বাগের কারণ হতে পারে।
প্রথমত, আপনি পুশিং কোডটি শেষ করতে পারেন যা কেবলমাত্র আপনার মেশিনে এবং কারওরই কাজ করে না। আপনি মুছে ফেলা ফাইলগুলির কাছে যদি ঝুঁকির রেফারেন্স থাকে তবে আপনি যদি প্রাসঙ্গিক .pyc ফাইলগুলি ম্যানুয়ালি মুছে না ফেলেন তবে এগুলি স্থানীয়ভাবে কাজ করবে কারণ .pyc ফাইলগুলি আমদানিতে ব্যবহার করা যেতে পারে। এটি এই বিষয়টির সাথে আরও জোরালো যে একটি সঠিকভাবে কনফিগার করা সংস্করণ নিয়ন্ত্রণ ব্যবস্থা কেবলমাত্র .PY ফাইলগুলিকে কেন্দ্রীয় ভান্ডারে ঠেকিয়ে দেবে, .pyc ফাইল নয়, এর অর্থ হল যে আপনার কোড "আমদানি পরীক্ষা" পাস করতে পারে (সবকিছু ঠিক আছে আমদানি করে) ঠিক আছে এবং না অন্য কারও কম্পিউটারে কাজ।
দ্বিতীয়ত, আপনি যদি প্যাকেজগুলিকে মডিউলগুলিতে পরিণত করেন তবে আপনার কয়েকটি দুর্দান্ত ভয়ঙ্কর বাগ থাকতে পারে। আপনি যখন কোনও প্যাকেজ (কোনও __init__.py
ফাইলের ফোল্ডার ) একটি মডিউলে রূপান্তর করেন (a .py ফাইল), সেই প্যাকেজটিকে একবার উপস্থাপন করে .pyc ফাইলগুলি রয়ে যায়। বিশেষত, __init__.pyc
অবশেষ। সুতরাং, যদি আপনার কাছে কিছু কোডের সাথে প্যাকেজ ফু থাকে তবে কিছু def bar(): pass
যায় আসে না, তবে পরে সেই প্যাকেজটি মুছুন এবং কিছু ফাংশন দিয়ে একটি ফাইল foo.py তৈরি করুন এবং রান করুন:
from foo import bar
তুমি পাও:
ImportError: cannot import name bar
কারণ পাইথন এখনও foo প্যাকেজ থেকে পুরানো .pyc ফাইলগুলি ব্যবহার করছে, যার কোনটিই বারটিকে সংজ্ঞায়িত করে না। এটি একটি ওয়েব সার্ভারে বিশেষত সমস্যাযুক্ত হতে পারে, যেখানে সম্পূর্ণরূপে কার্যকারী কোডটি .pyc ফাইলগুলির কারণে ভেঙে যেতে পারে।
এই উভয় কারণে (এবং সম্ভবত অন্যদের) ফলস্বরূপ, আপনার ডিপ্লোয়মেন্ট কোড এবং পরীক্ষার কোডটি .pyc ফাইলগুলি মুছে ফেলা উচিত, যেমন নীচের ব্যাশের লাইনের সাথে:
find . -name '*.pyc' -delete
এছাড়াও, পাইথন ২.6 হিসাবে, আপনি -B
.pyc ফাইলগুলি ব্যবহার না করার জন্য পতাকা সহ পাইথন চালাতে পারেন । .Pyc ফাইলগুলি এড়াতে কীভাবে দেখুন ? আরো বিস্তারিত জানার জন্য.
আরও দেখুন: আমি কীভাবে কোনও প্রকল্প থেকে সমস্ত .pyc ফাইলগুলি সরিয়ে দেব?
rm *.pyc
। এটি নেস্টেড ফোল্ডারে .pyc ফাইলগুলি মুছবে না।find . -name '*.pyc' -delete
পরিবর্তে ব্যবহার করুন