পাইথন 2 তে পাইথন 3 কোড রূপান্তর করার জন্য পাইথন ও জ্যাঙ্গোর কোন সংস্করণ সবচেয়ে উপযুক্ত?


11

বর্তমানে আমি একটি বড় ফার্মে কাজ করছি যেখানে আমাদের পাইথন 2 পুরাতন বড় জ্যাঙ্গো প্রকল্পটিকে পাইথন 3 সংস্করণে রূপান্তর করতে হবে তাই আমি প্রচুর গবেষণা করেছি তবে এখনও পাইথন এবং জ্যাঙ্গোর কোন সংস্করণ রূপান্তরকরণের জন্য উপযুক্ত তা সম্পর্কিত কোনও সঠিক উত্তর খুঁজে পাচ্ছি না।

বর্তমানে আমি আমার পুরানো সংস্করণে পাইথন: 2.7.16 এবং জ্যাঙ্গো: 1.9.13 ব্যবহার করছি।

পাইথন 2 থেকে পাইথন 3 রূপান্তরটির জন্য পুরানো সংস্করণের জন্য পাইথন ও জ্যাঙ্গোর সর্বোত্তম সংস্করণ যে কেউ আমাকে প্রস্তাব দিতে পারে।


পাইথন 3 এর বর্তমান সংস্করণটি পাইথন 3.8, এবং জ্যাঙ্গোর সর্বশেষ সংস্করণটি জ্যাঙ্গো 3.0। জ্যাঙ্গোর ওয়েবসাইট অজগর 3 এর সর্বশেষ সংস্করণটির প্রস্তাব দেয় , যা 3.8। আপনি কি পাইথন এবং জাঙ্গো উভয়কে তাদের সাম্প্রতিক সংস্করণগুলিতে গতি বাড়িয়ে তুলতে চান না তার কোনও কারণ আছে?
সবুজ চাদর গায়ে

2
উপাখ্যানিকভাবে, আমি কেবল কয়েকদিন আগে বুঝতে পেরেছিলাম যে জ্যাঙ্গো-ভিত্তিক ওয়েবসাইটটি আমি কয়েক বছর ধরে রক্ষণ করছি এবং আসলে এটি যে সার্ভারটি পাইথন 2.7 ব্যবহার করে হোস্ট করা আছে সেখানে চালিত হয়, যেখানে আমি পাইথন 3 ব্যবহার করে স্থানীয়ভাবে এটি চালাচ্ছি। 7। আমি কেবলমাত্র তফাতটি খুঁজে পেল যখন আমি প্রথমবারের জন্য কোথাও এফ-স্ট্রিংগুলি ব্যবহার করার চেষ্টা করেছি এবং ওয়েবসার্ভারের সংস্করণটি ক্র্যাশ হয়েছিল; অন্যথায় এটি পরীক্ষামূলকভাবে এবং বৈশিষ্ট্য সংযোজনের উদ্দেশ্যে, স্থানীয় ও দূরবর্তীভাবে প্রত্যাশার মতো ঠিক ঠিক একইভাবে চলছে running আমার সম্পূর্ণ উপায়ে উপসংহারটি হল যে জাজানো বেশিরভাগ জিনিসের সাথে সাধারণত উপযুক্ত।
সবুজ পোশাকওয়ালা গাই

1
সর্বশেষ সংস্করণে, আমি খুঁজে পেয়েছি যে কিছু লোক প্রস্তাব দেয় না কারণ সর্বশেষ সংস্করণে নতুন সমস্যা সম্পর্কিত যদি কোনও সমস্যা থাকে তবে মাঝে মাঝে সমাধান পাওয়া মুশকিল হবে তাই বর্তমান প্রকল্পে আমি এই ধরণের ঝুঁকি তৈরি করতে চাই না এবং এর জন্যও পরীক্ষার উদ্দেশ্য, আমি আমার প্রকল্পটি সর্বশেষ জাজানো সহ সর্বশেষ সংস্করণে অজগর 3.7.3 এ রূপান্তর করতে শুরু করেছি এবং ইতিমধ্যে 30 ধরণের সমস্যা পেয়েছি।
চাঁদ

এটি লক্ষ করা উচিত - এই প্রশ্নটি আমার জন্য একটি পর্যালোচনা নিরীক্ষায় উঠে এসেছিল। "কোনও দলিল বা রেফারেন্স আছে কি" খুব স্পষ্টভাবে অফ-টপিক (অফ-সাইট রিসোর্সের জন্য জিজ্ঞাসা করা)। তবে আমি বিশ্বাস করি যে প্রশ্নটি এমনভাবে সম্পাদনা করা যেতে পারে যে এটি নীচের স্বীকৃত উত্তরের দিকে আরও ভালভাবে পরিচালিত করতে পারে।
মায়ার

উত্তর:


3

আমি একটি বিট যোগ চাই চিন্তা কৌশল প্রথম উভয় 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 e2 জন নন-ব্রেইনার।

আমার থ্রোল্টেড কমান্ডটি দেখতে এমনটি হয়েছিল:

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)কিন্তু আমি জানি আগাম সামান্য সম্পর্কে চিন্তা করতে নেই। '


সদুপদেশ. কেবল একটি নোট, জ্যাঙ্গো নিজেই sixসামঞ্জস্যতা স্তরটির জন্য ইতিমধ্যে ব্যবহার করে, সুতরাং আপনি যদি রূপান্তরকালে জাজানো প্রকল্পে এটি ব্যবহার করতে চান, তবে এটি "জটিল স্থায়ী নির্ভরতা যুক্ত করে না"।
wim

@wim। আমি তোমার সাথে একমত ছয়, কিন্তু এটি দৃষ্টিভঙ্গির উপর নির্ভর করে। আমি ইতিমধ্যে লক্ষ করেছি যে এটি তৃতীয় পক্ষের libs সহ আসে, সুতরাং এটি প্রয়োজনীয়তা এবং সামগ্রিক নির্ভরতার ক্ষেত্রে "ব্যয়" করে না। তবে আমি - সম্ভবত ভুলভাবে - এটিকে আমার কোডের মাঝখানে একটি বড় কালো বাক্স / ওয়ার্ট হিসাবে বিবেচনা করেছি । যদি আপনি যা করছেন তা হ'ল টেস্টিং স্ট্রিং / ইউনিকোড / বেসস্ট্রিংয়ের মতো জিনিস এবং যদি আপনি নিজে নিজে কীভাবে এটি করতে জানেন তবে আপনার শিমগুলি যখন আর প্রয়োজন হয় না তখন আপনি কীভাবে তাদের পিছনে পিছনে ফিরে যেতে পারেন তা ঠিক জানেন। যদিও আমি এটি শেষ পর্যন্ত সরিয়ে দেব।
জেএল পেয়ারেট

এটা pip install -e ...(ছোট মামলার সাথে -e), তাই না?
thebjorn

এটা সম্ভবত হয়। সংশোধন করবে
জে এল পেয়ারেট

3

আমার পরামর্শটি প্রথমে আপগ্রেড করার জন্য Django==1.11.26যা জ্যাঙ্গোর অতি সাম্প্রতিক সংস্করণ যা পাইথন 2 এবং পাইথন 3 উভয়কেই সমর্থন করে 3.. আপাতত আপনার পাইথন ২.7 এর বর্তমান সংস্করণে থাকুন।

1.10.x এবং 1.11.x এর জন্য প্রকাশিত নোটগুলি সাবধানে পড়ুন, অবচয়গুলির জন্য পরীক্ষা করা এবং আপনার 1.9.x কোড থেকে কাজ করা বন্ধ করে এমন কোনও কিছু ঠিক করা। জিনিসগুলি বিরতি হবে। জ্যাঙ্গো দ্রুত চলেছে। একটি বৃহত জ্যাঙ্গো প্রকল্পের জন্য, অনেকগুলি কোড পরিবর্তন প্রয়োজন হতে পারে এবং আপনি যদি প্রচুর তৃতীয় পক্ষের প্লাগইন বা লাইব্রেরি ব্যবহার করেন তবে আপনাকে তাদের সংস্করণগুলি চারপাশে জাগ্রত করতে হতে পারে। আপনার তৃতীয় পক্ষের কিছু নির্ভরতা সম্ভবত পুরোপুরি পরিত্যাগ করা হবে, সুতরাং আপনাকে প্রতিস্থাপনগুলি খুঁজে পেতে হবে বা বৈশিষ্ট্যগুলি সরাতে হবে।

প্রতিটি সংস্করণ আপগ্রেডের জন্য প্রকাশিত নোটগুলি সন্ধান করতে কেবল "জাজানোতে নতুন কী" গুগল করুন। হিটগুলি হতাশার সাথে সমস্ত অবচয় এবং পরিবর্তনগুলি ডকুমেন্ট করবে:

ওয়েব টেপ জ্যাঙ্গো ১.১১-তে ঠিকঠাকভাবে দেখা যাচ্ছে যখন সমস্ত পরীক্ষা পাস হয়ে যায় ( আপনার কাছে একটি টেস্ট স্যুট আছে, তাই না?) তারপরে আপনি জ্যাঙ্গো সংস্করণটিকে একই রেখে, পাইথন 3 রূপান্তর করতে পারেন। জ্যাঙ্গো 1.11 পাইথন 3.7 পর্যন্ত সমর্থন করে, যাতে এটি লক্ষ্য করা ভাল সংস্করণ হবে। বাইটস এবং টেক্সটের মধ্যে অন্তর্নিহিত রূপান্তরগুলি এখনই শেষ হয়ে গেছে এবং অনেক পাইথন 2 ওয়েব অ্যাপস এর উপর নির্ভর করেছে বলে সমস্ত স্থান থেকে ইউনিকোডের প্রত্যাশা করুন।

প্রকল্পটি একবার জাঙ্গো ১.১১ এবং পাইথন ৩.7-এ কাজ করছে বলে মনে হচ্ছে, তারপরে আপনি পূর্বের মতো একই প্রক্রিয়া অনুসরণ করে জাজানো 3.0 তে উন্নীত করার বিষয়ে চিন্তা করতে পারেন - রিলিজ নোটগুলি পড়া, প্রয়োজনীয় পরিবর্তনগুলি করা, পরীক্ষা স্যুট চালানো, এবং পরীক্ষা করা একটি ডেভ সার্ভারে ম্যানুয়ালি ওয়েব অ্যাপ্লিকেশন।


1
অবশ্যই যেতে হবে। আপনার পরীক্ষার কোডটি 2.7 এবং 3.x উভয়ই চালাতে পান। আপনার সাথে একই গিট রেপোতে পয়েন্ট করাতে 2 টি আলাদা আলাদা ভার্চুয়ালেন্স থাকতে পারে pip install -E। ইউনিটের পরীক্ষাগুলি চলমান পরে, জ্যাঙ্গো-অন-3x এর পরীক্ষার পরীক্ষা শুরু করুন এবং আবার কোডটি 2 এবং 3 তে চালিয়ে যান কিছুটা সতর্ক কোডিং সহ এবং আপনার 2.7 ব্রিজ বার্ন না করার বিষয়ে সতর্কতার সাথে - উদাহরণস্বরূপ কোনও এফ স্ট্রিং নেই - সুইচওভারটি হবে খুব অ্যান্টিক্লিম্যাকটিক। একবার 3.x সম্পূর্ণ স্থিতিশীল হয়ে গেলে, কেবলমাত্র 3.x কোড ব্যবহার শুরু করুন। সুবিধাটি হ'ল উত্পাদনের 2.7 স্যুইচ না হওয়া পর্যন্ত সর্বদা পদক্ষেপে থাকে।
জেএল পেয়ারেট

2

আমি প্রথমে পাই 3 তে আপগ্রেড করব। আপনি তাকান করতে হবে setup.pyস্থিতিশীল / 1.9.x শাখা (চালু জ্যাঙ্গো রেপো তে https://github.com/django/django/blob/stable/1.9.x/setup.py যে py3 জিনিসটা) সমর্থিত সংস্করণগুলি হল 3.4 (মৃত) এবং 3.5।

একবার আপনি পাই 3.5 এবং জ্যাঙ্গো 1.9 এ থাকলে আপনি যে সংস্করণটি শেষ করতে চান তার সংস্করণ না পাওয়া পর্যন্ত আপনি একবারে একটি আপগ্রেড করতে পারেন। উদাহরণস্বরূপ জাজানো 1.11 পাই 3.3 এবং পাই 3.7 সমর্থন করে

py27/dj19 -> py35/dj19 -> py35/dj1.11 -> py37/dj1.11 ... -> py37/dj2.2

dj2.2 হ'ল পাই সংস্করণ সমর্থনকারী প্রথম সংস্করণ, তবে আপনি যদি সাধারণত একটি রক্ষণশীল পরিবেশে কাজ করেন তবে আমি সম্ভবত পিআই 37 / ডিজে 2.2 এ থামব।

আপনার যদি অন্য প্যাকেজ থাকে তবে আপনাকে প্রতিটি পদক্ষেপে একসাথে কাজ করবে এমন সংস্করণ সংমিশ্রণগুলি সন্ধান করতে হবে। একটি পরিকল্পনা থাকা কী, এবং একবারে কেবলমাত্র একটি উপাদান আপগ্রেড করা সাধারণত আপনার সময় সাশ্রয় করে।

ভবিষ্যতের লাইব্রেরি ( https://python-future.org/ ) আপনাকে পিআই 27 এবং 3.x উভয় ক্ষেত্রে চালানোর কোড দরকার হলে আপনাকে অনেকগুলি উদ্ভট পরিস্থিতিতে সাহায্য করবে। ছয়টিও দুর্দান্ত। আমি আপনার নিজস্ব সামঞ্জস্যতা স্তর ঘূর্ণন এড়াতে হবে (চাকা পুনরায় উদ্দীপনা কেন?)

যদি কিছুটা সম্ভব হয় তবে শুরু করার আগে আপনার ইউনিট পরীক্ষার কভারেজটি 75-85% পর্যন্ত পাওয়ার চেষ্টা করুন এবং প্রতিটি আপগ্রেড পদক্ষেপের জন্য "থেকে" এবং "সংস্করণ" উভয়টিতে অবশ্যই স্বয়ংক্রিয় পরীক্ষার সেট আপ করুন। আপনি পরবর্তী সংস্করণে আপগ্রেড করার আগে জ্যাঙ্গো থেকে সমস্ত সতর্কতাগুলি পড়েছেন এবং তা ঠিক করেছেন তা নিশ্চিত করুন - জ্যাঙ্গো পশ্চাদপটে সামঞ্জস্যতা সম্পর্কে খুব কম চিন্তা করে, তাই আমি সাধারণত আপগ্রেড পাথের প্রতিটি ছোটখাটো সংস্করণে আঘাত করার পরামর্শ দিই (অথবা কমপক্ষে নিশ্চিত হয়ে নিন যে আপনি "পিছনের দিকে" পড়েছেন) প্রতিটি ছোটখাট সংস্করণের জন্য অসঙ্গতি "এবং অবমূল্যায়নের তালিকা)।

শুভকামনা (আমরা এখনই পাইপাই / ডিজে 1.7 থেকে 300+ কিলোক কোড বেস আপগ্রেড করছি, সুতরাং আমি আপনার ব্যথা অনুভব করছি ;-)


1
পরীক্ষার কভারেজের উপর +1। এটি এখানে একটি মূল মেট্রিক, যে কোনও পদ্ধতির গ্রহণ শেষ হয়। এটা সত্যিই সাহায্য করে যখন পরিব্যাপক কোড পরিবর্তন নিয়ে পরীক্ষা-নিরীক্ষা এবং আমি এই কথা বলছি কেউ হিসাবে না সব TDD- এ লাল / সবুজ পরীক্ষা এ ভক্ত। আপনার ২.7 ফলাফলকে বেসলাইনের কোনও উপায় নির্ধারণ করুন এবং আপগ্রেড করা অনেক সহজ হয়ে যায়।
জেএল পেয়ারেট

2

আমার প্রকল্পে আমার একই ধরণের সমস্যা রয়েছে এবং আমি জ্যাঙ্গো সংস্করণ ২.২..7 সহ পাইথন ৩.7.৫ চেষ্টা করেছি।

আপনার পাইথনের সর্বশেষতম সংস্করণ 3.8 বা জাজানো সর্বশেষ সংস্করণ 3.0 নিয়ে যাওয়া উচিত নয় কারণ আপনি সম্ভবত এমন কোনও সম্ভাবনা পেয়েছিলেন যে কোনও ধরণের বাগের জন্য আপনি সর্বশেষ সংস্করণগুলির জন্য সঠিক সমাধান পেতে সক্ষম নন।


এটি একটি মন্তব্য হওয়া উচিত
ব্রুনো

-2

আপনার বর্তমান সংস্করণগুলির জন্য অঙ্কুর চেষ্টা করা উচিত। পাইথন ৩.৮ এবং জ্যাঙ্গো 3.0.০. ছয়টি লাইব্রেরি কিছু কনভেনশন পরিবর্তনে সহায়তা করবে। যে কোনও উপায়ে আপনাকে কিছু রিফ্যাক্টরিং করতে হবে যাতে আপনি এটি বর্তমানও করতে পারেন।


3
আপনি কি কখনও জ্যাঙ্গো আপগ্রেড করেছেন? এটি কেবল ইচ্ছুক চিন্তাভাবনা। 2.7 / 1.9 থেকে সরাসরি পাইথন 3.8 এবং জ্যাঙ্গো 3.0 এ যাওয়া কার্যত অসম্ভব হবে। এমনকি জ্যাঙ্গো 1.9 থেকে 1.10 এর মতো ছোটখাটো সংস্করণ আপগ্রেড করাও একটি জটিল প্রক্রিয়া হতে পারে, অনেক কোড পরিবর্তন প্রয়োজন।
wim

হ্যাঁ আমি পেয়েছি, সম্পূর্ণ রিফ্যাক্টর করার এবং অ্যাপ্লিকেশনটি বর্তমান আনার জন্য আমার কাছে বিলাসিতা এবং সময় অনুমোদন ছিল। আবার আবেদনের আকার, যুক্তি এবং সময়ের সীমাবদ্ধতা বেশিরভাগ লোকের কাছে একটি বিশাল সমস্যা তবে তারা কখনই আবেদনের আকার বা সময়ের সীমাবদ্ধতার কথা উল্লেখ করেনি, তাই আমি "সেরা সমাধান" বা "ইচ্ছামত চিন্তাভাবনা" সম্পর্কে আমার মতামতের সুপারিশ করেছি;)
ডেভ

অতিরিক্ত হিসাবে আপনি যদি এলটিএস উবুন্টুতে জবাবদিহী এবং চলমান জিনিসগুলি সম্পর্কেও চিন্তিত হন তবে আপনি দেখতে পাবেন উবুন্টু 18.04-তেও 3.7 সমর্থন অনুপস্থিত। সুরক্ষা পডকাস্টগুলি আমি শুনতে শুনতে 3.8 বিন্দু প্রকাশ অবধি অবধি সামান্য কিছুটা নিষ্পত্তি করতে বা অপ্রয়োজনীয় ঝুঁকির জন্য ২. -1 দেওয়ার পরামর্শ দিই।
জেএল পেয়ারেট

কোনও ভাল সুরক্ষা পডকাস্ট সুপারিশ?
ডেভ

পাইথন সেকেন্ডের জন্য শোনো নোটস / পডকাস্টস / ট্যালক -পিথন- টু - / But তবে আমি মনে করি যে সাম্প্রতিক সময়ে ৩.৮-এর সাবধান থাকাটি সাম্প্রতিকতম। ঝুঁকিপূর্ণ ব্যবসা হ'ল একটি ভাল এবং বিনোদনমূলক সুরক্ষা পডকাস্ট, আপনি যদি আন্তর্জাতিক সম্পর্কগুলি অনুসরণ করেন sp ডাউনভোটের জন্য ক্ষমাপ্রার্থী, তবে হ্যাঁ, আপনার ক্ষেত্রে যা কাজ করেছে তা অন্য কোনও প্রসঙ্গে অন্য কাউকে তরফিত করতে পারে। 2 থেকে 3 রূপান্তরের জন্য শ্রোতা নোটগুলি
জেএল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.