আমি একটি বিট যোগ চাই চিন্তা কৌশল প্রথম উভয় 2.7 এবং 3.x কাজ জ্যাঙ্গো যথাযথ সংস্করণ পেতে - - এবং কিছু রূপরেখা Wim এর উত্তর দ্বারা শিল্পমন্ত্রী কৌশল আমার জন্য কাজ করেন।
পাইথন ২.7 হ'ল আপনার পালানোর পোড, আপনি যতক্ষণ না 3.x তে ট্রিগারটি টানছেন
- আপনার পরীক্ষা উভয় চালানো উচিত
- এফ-স্ট্রিংয়ের মতো কোনও 3.x নির্দিষ্ট বৈশিষ্ট্য ব্যবহার করবেন না
- প্রথম পাইথন 3.x, তারপরে কেবল জ্যাঙ্গো 2.x যা 2.7 এ চলবে না
- খুব তাড়াতাড়ি শুরু করুন, বিশ্লেষণ করবেন না, তবে বিগ ব্যাং পদ্ধতিটি এড়িয়ে চলুন
- প্রথমে ফাইল দ্বারা ফাইল।
- আপনার জন্য পরীক্ষার স্যুট রয়েছে এমন ইউটিলিটি লাইব্রেরির মতো সর্বনিম্ন স্তরের কোড দিয়ে শুরু করুন।
- যদি সম্ভব হয় তবে ধীরে ধীরে আপনার পরিবর্তনগুলি ২.7 উত্পাদন শাখায় মার্জ করার চেষ্টা করুন এবং আপনার 3.x পোর্টিং কোডটি উন্নত পরিবর্তনের সাথে আপডেট রাখুন।
জ্যাঙ্গোর কোন ছোট সংস্করণটি শুরু করা উচিত?
আমার মানদণ্ডটি হ'ল জাজানো মাইগ্রেশনগুলি মোটামুটিভাবে জড়িত থাকতে পারে (এবং আসলে 2 => 3 কাজের চেয়ে বেশি চিন্তাভাবনা প্রয়োজন)। সুতরাং আমি সর্বশেষতম এবং সর্বশ্রেষ্ঠ 1.11 এ চলে যাব আপনি ইতিমধ্যে আপনার 2.7 ব্যবহারকারীদের জন্য কিছু মান সরবরাহ করছেন। ১.১১-তে প্রাক-২.x সামঞ্জস্যতার শিমগুলি সম্ভবত রয়েছে এবং আপনি এটির ২.x অবমূল্যায়ন সতর্কতা পেয়ে যাবেন।
পাইথন 3.x এর কোন ছোট সংস্করণটি শুরু করা উচিত?
আপনার সমস্ত তৃতীয় পক্ষের libs এর উপলব্ধতা, আপনার সিআই / ডিভস স্যুট থেকে সমর্থন এবং আপনার নির্বাচিত সার্ভার ওএস চিত্রগুলিতে উপলব্ধতার মতো সমস্ত কোণ বিবেচনা করার জন্য সেরা। আপনি সর্বদা 3.8 ইনস্টল করতে পারেন এবং নিজের প্রয়োজনগুলির একটি পাইপ ইনস্টল করে দেখতে পারেন। Txt নিজেই, উদাহরণস্বরূপ।
লিভারেজ গিট (বা আপনি যে কোনও স্কেম ব্যবহার করেন) এবং ভার্চুয়ালেনভ ।
- পৃথক
requirement.txt
ফাইল, কিন্তু ...
- আপনার যদি ফাইল-ভিত্তিক, গিট রেপো থাকে তবে আপনি প্রতিটি ভেনভকে একই কোডলাইনে একটি দিয়ে নির্দেশ করতে পারেন
pip install -e <your directory>
। এর অর্থ হ'ল, 2 টি আলাদা টার্মিনালে আপনি একই ইউনিটস্টের (গুলি) এর বিপরীতে 2.7 এবং 3.x চালাতে পারেন।
- এমনকি আপনি বিভিন্ন বন্দরগুলিতে পাশাপাশি পাশাপাশি 2.7 এবং 3.x জ্যাঙ্গো সার্ভার চালাতে পারেন এবং সেগুলিতে ফায়ারফক্স এবং ক্রোমটি বলতে পারেন।
- প্রায়শই কমিট করুন (কমপক্ষে পোর্টিং শাখায়) এবং গিট বাইসেক্ট সম্পর্কে শিখুন ।
2to3 ব্যবহার করুন
হ্যাঁ, আপনি এটি ছেড়ে দিলে এটি 2.7 কোড এবং জ্যাঙ্গো ভেঙে যাবে। তাই ...
এটি পূর্বরূপ মোডে বা কোনও একক ফাইলের বিরুদ্ধে চালান। এটি কী ভাঙছে তা দেখুন তবে এটি ঠিক কী করেছে তাও দেখুন।
এটি কেবলমাত্র কয়েকটি নির্দিষ্ট রূপান্তরগুলিতে থ্রোল্ট করুন যা ২.7 বা জাজানো ভেঙে না । print x
=> print (x)
এবং except(Exception) as e
2 জন নন-ব্রেইনার।
আমার থ্রোল্টেড কমান্ডটি দেখতে এমনটি হয়েছিল:
2to3 $tgt -w -f except -f raise -f next -f funcattrs -f print
- আপনি সত্যিই আত্মবিশ্বাসী না হওয়া পর্যন্ত এটিকে ফাইল-এ-ফাইল চালান।
ব্যবহারের sed বা awk বাল্ক রূপান্তরের জন্য আপনার এডিটর বদলে।
সুবিধাটি হ'ল, আপনি যখন আপনার অ্যাপ্লিকেশনগুলির সুনির্দিষ্ট উদ্বেগগুলি সম্পর্কে আরও সচেতন হবেন, আপনি এমন একটি পরিবর্তন তৈরি করতে পারেন যা 1 ফাইল বা অনেকগুলি ফাইলে চালানো যেতে পারে এবং বেশিরভাগ কাজ 2.7 বা জ্যাঙ্গো না ভাঙিয়েই করতে পারেন। আপনার উপযুক্ত- থ্রোটলড 2to3 পাসের পরে এটি প্রয়োগ করুন । এটি আপনাকে আপনার সম্পাদকীয়তে রেসিডুয়াল ক্লিনআপ এবং আপনার পরীক্ষাগুলি পাস করার জন্য ছেড়ে দেয়।
(alচ্ছিক) ২.7 কোডে কালো চালানো শুরু করুন।
কালো যা একটি কোড বিন্যাসক, এটি বিশ্লেষণ চালাতে পাইথন 3 এএসটি ব্যবহার করে। এটি কোডটি চালানোর চেষ্টা করে না, তবে এটি সিনট্যাক্স ত্রুটিগুলি পতাকাঙ্কিত করবে যা এএসটি পর্যায়ে আসতে বাধা দেয়। যদিও আপনাকে সেখানে পৌঁছাতে কিছু পাইপ ইনস্টল করতে গ্লোবাল ম্যাজিক কাজ করতে হবে এবং আপনাকে কালো রঙের উপযোগিতাটি কিনতে হবে।
অন্যান্য লোকেরা এটি করেছে - তাদের কাছ থেকে শিখুন।
পাইথন 3 এ যাওয়ার জন্য # 155 ব্যবহারিক পদক্ষেপ শুনে আপনার কাজের কিছু ধারণা দেওয়া উচিত। এটির জন্য শো লিঙ্কগুলি দেখুন। তারা ইনস্টাগ্রাম (?) পদক্ষেপে কথা বলতে পছন্দ করে যা সাধারণ কোডবাসে ২.7 কোড চালিয়ে 3.x সিনট্যাক্সে এবং একই গিট শাখায় টানা-ট্রিগার দিন অবধি সামঞ্জস্য করে।
কনজারভেটিভ পাইথন 3 পোর্টিং গাইডও দেখুন
এবং ইনস্টাগ্রামটি পাইথন 3 এ একটি স্মুথ মুভ করে - নতুন স্ট্যাক
উপসংহার
জ্যাঙ্গো ১.১১ ইওএল (এপ্রিল ২০২০) এর জন্য আপনার সময়টি খুব কম, সুতরাং যদি আপনার কাছে এটি নিক্ষেপ করার জন্য 2+ দেব সংস্থান থাকে তবে আমি সমান্তরালভাবে নিম্নলিখিতগুলি করার বিষয়ে বিবেচনা করব:
ডিভিভি # 1: একটি জ্যাঙ্গো 1.11 বাম্পের সাথে শুরু করুন (থিওরিটি যে জ্যাঙ্গো 1.11 সম্ভবত জ্যাঙ্গো 2.x এ যাওয়ার এক ঝাঁপ হিসাবে সেরা অবস্থিত), 2.7 ব্যবহার করে।
DEV # 2: আপনার অ-জাজানো ইউটিলিটি কোডটির পাইথন 3.6 / 3.7 এ শুরু করুন। যেহেতু কোডটি এই মুহুর্তে 2.7 সামঞ্জস্যপূর্ণ তাই আপনার যাওয়ার সাথে সাথে এটি # 1 এ মার্জ করুন।
উভয় কাজ কীভাবে এগিয়ে যায় দেখুন, জ্যাঙ্গো সম্পর্কিত প্রকল্পের ঝুঁকি কী এবং পাইথন 3 ব্যথার চেহারা কেমন তা নির্ধারণ করুন। আপনি ইতিমধ্যে পাইথন ২.7 ইওএল অনুপস্থিত, তবে একটি অপ্রচলিত ওয়েব ফ্রেম ফ্রেম সম্ভবত পাইথন ২.7 এর চেয়ে কম বিপজ্জনক, কমপক্ষে কয়েক মাসের জন্য। তাই আমি জ্যাঙ্গো ১.৯ থেকে মাইগ্রেশন শুরু করার জন্য খুব বেশিক্ষণ অপেক্ষা করব না এবং এটি করা আপনার কাজটি নষ্ট হবে না। আপনি যখন অগ্রগতি দেখছেন, আপনি আরও ভাল প্রকল্পের ঝুঁকিগুলি দেখতে শুরু করবেন।
আপনার প্রাথমিক 2to3 অগ্রগতি ধীর হবে, তবে টুলিং এবং গাইডেন্স যথেষ্ট ভাল যে আপনি দ্রুত গতি বাড়িয়ে তুলবেন তাই অভিজ্ঞতা সংগ্রহ করা শুরু করার আগে এটিকে ওভারটিঙ্ক করবেন না। জ্যাঙ্গো পক্ষ আপনার কাঠামোর পরিবর্তনগুলি ভেঙে দেওয়ার জন্য আপনার এক্সপোজারের উপর নির্ভর করে যার জন্য আমি মনে করি যে তাড়াতাড়ি শুরু করা ভাল।
পিএস (বিতর্কিত / ব্যক্তিগত মতামত) আমি ছয় বা অন্যান্য ক্যানড 2-থেকে -3 ব্রিজ লাইব্রেরি বেশি ব্যবহার করি নি ।
এটা না কারণ আমি এটা বিশ্বাস করতে পারি না - এটা 3rd পার্টি লিব জন্য উজ্জ্বল নেই - বরং যে, আমি একজন জটিল স্থায়ী নির্ভরতা যোগ করার জন্য চাইনি (এবং আমি খুব তার ডক পড়তে অলস ছিল)। আমি দীর্ঘ সময়ের জন্য 3.x সাথে সামঞ্জস্যপূর্ণ সিনট্যাক্সে 2.7 কোড লিখছিলাম তাই এগুলি ব্যবহার করার প্রয়োজনটি আমি সত্যিই অনুভব করি না। আপনার মাইলেজটি পরিবর্তিত হতে পারে এবং যদি খুব বেশি কাজের মতো মনে হয় তবে এই পথে যাত্রা করবেন না ।
পরিবর্তে, আমি এই ধরণের সামগ্রীর সাথে একটি পাই 223.py (57 টি এলওসি সহ মন্তব্যগুলি) তৈরি করেছি, যার বেশিরভাগই স্ট্যান্ডার্ড লাইব্রেরিতে অবচয় এবং নাম পরিবর্তনের জন্য কাজের ক্ষেত্রগুলির সাথে সম্পর্কিত।
try:
basestring_ = basestring
except (NameError,) as e:
basestring_ = str
try:
cmp_ = cmp
except (NameError,) as e:
# from http://portingguide.readthedocs.io/en/latest/comparisons.html
def cmp_(x, y):
"""
Replacement for built-in function cmp that was removed in Python 3
"""
return (x > y) - (x < y)
তারপরে সেই নির্দিষ্ট উদ্বেগকে ঘিরে কাজ করতে সেই পাই 223 থেকে আমদানি করুন। আমি পরে শুধু আমদানি খানা এবং যারা অদ্ভুত সরানো হবে isinstance(x, basestr_)
থেকে isinstance(x, str)
কিন্তু আমি জানি আগাম সামান্য সম্পর্কে চিন্তা করতে নেই। '