ডিস্ট্রিবিউট, ডিস্টুয়েলস, সেটআপলস এবং ডিস্টুটিস 2 এর মধ্যে পার্থক্য?


594

পরিস্থিতি

আমি পাইথন 3-তে একটি ওপেন-সোর্স লাইব্রেরি পোর্ট করার চেষ্টা করছি (( সিমপি , যদি কেউ ভাবছেন))

সুতরাং, 2to3পাইথন 3 তৈরি করার সময় আমাকে স্বয়ংক্রিয়ভাবে চালানো দরকার that এটি করার জন্য, আমাকে ব্যবহার করা দরকার distribute। অতএব, আমার বর্তমান সিস্টেমটি বন্দর করা দরকার, যা (ডক্টেট অনুসারে) distutils


সমস্যাটি

দুর্ভাগ্যবশত, আমি নিশ্চিত এই modules- পার্থক্য নই distutils, distribute, setuptools। ডকুমেন্টেশনটি সর্বোত্তম হিসাবে স্কেচিযুক্ত, কারণ এগুলি সমস্ত একে অপরের কাঁটা বলে মনে হয়, বেশিরভাগ পরিস্থিতিতে (তবে বাস্তবে, সমস্ত নয়)… এবং আরও অনেক কিছুতে সামঞ্জস্যপূর্ণ হওয়ার উদ্দেশ্যে।


প্রশ্নটি

কেউ পার্থক্য ব্যাখ্যা করতে পারে? আমার কী ব্যবহার করার কথা? সবচেয়ে আধুনিক সমাধান কি? (একপাশে হিসাবে, আমি পোর্টিং সম্পর্কে কিছু গাইডেরও প্রশংসা করব Distribute, তবে এটি প্রশ্নের ক্ষেত্রের বাইরে কিছু নয়)


22
কেমন বিভ্রান্তিকর? আমি একটি জাভা / সি ++ ব্যাকগ্রাউন্ড থেকে পাইথনে এসেছি। এই পরিস্থিতিতে, বিতরণ খুব সোজা এগিয়ে। অজগর সহ, আমি এ, এই সমস্ত বিতরণ ব্যবস্থা সম্পর্কে সম্পূর্ণ বিভ্রান্ত।
রাফি খ্যাচাডৌড়িয়ান

75
আমি সম্মত, পাইথন প্যাকেজিং / ইনস্টলেশন সম্প্রদায়ের কোনও সুস্পষ্ট নির্দেশিকা ছাড়াই অনেক বিকল্প রয়েছে।
সাবুনকু

6
আমি কেবল বাইনারি বিতরণকে সমর্থন না করে পাইপ
পিক্সেলবিট

@ পিক্সেলবিট পাইপ ইনস্টল করে চাকাগুলি (তথাকথিত বাইনারি বিতরণ) সমর্থন করে, সেই লিঙ্কটি পুরানো।
ফ্লাইম

উত্তর:


836

2020 সালের মার্চ পর্যন্ত, এই প্রশ্নের অন্যান্য উত্তরগুলির বেশিরভাগই বহু বছরের পুরানো। পাইথন প্যাকেজিংয়ের বিষয়ে আপনি যখন পরামর্শ পান, তখন প্রকাশের তারিখটি মনে রাখবেন এবং পুরানো তথ্যের উপর নির্ভর করবেন না।

পাইথন প্যাকেজিং ইউজার গাইড একটি পঠিত মূল্য। প্রতিটি পৃষ্ঠায় একটি "সর্বশেষ আপডেট" তারিখ প্রদর্শিত হয়, যাতে আপনি ম্যানুয়ালটির অভ্যর্থনা পরীক্ষা করতে পারেন এবং এটি বেশ বিস্তৃত। পাইথন সফটওয়্যার ফাউন্ডেশন এর পাইথন.আর.র একটি সাবডোমেনে এটি হোস্ট করা হয়েছে এটি সত্যই এটির বিশ্বাসযোগ্যতা যুক্ত করে। প্রকল্পের সারাংশ পৃষ্ঠা এখানে বিশেষভাবে প্রাসঙ্গিক।

সরঞ্জামের সংক্ষিপ্তসার:

পাইথন প্যাকেজিং ল্যান্ডস্কেপের সংক্ষিপ্তসার এখানে:

সমর্থিত সরঞ্জামগুলি:

অবমানিত / পরিত্যক্ত সরঞ্জামগুলি:

  • distributeএকটি কাঁটাচামচ ছিল setuptools। এটি একই নাম স্থানটি ভাগ করেছে, সুতরাং আপনার যদি বিতরণ ইনস্টল করা থাকে import setuptoolsতবে আসলে বিতরণের সাথে বিতরণ করা প্যাকেজটি আমদানি করতে পারে। ডিস্ট্রিবিউটটি সেটআপলগুলিতে ০.7 এ আবার একত্রিত হয়েছিল , সুতরাং আপনাকে আর বিতরণ ব্যবহার করার দরকার নেই। আসলে, পাইপির সংস্করণটি কেবল একটি সামঞ্জস্য স্তর যা সেটআপলগুলি ইনস্টল করে।

  • distutils2শ্রেষ্ঠ নিতে একটি প্রচেষ্টা ছিল distutils, setuptoolsএবং distributeহয়ে পাইথন এর স্ট্যান্ডার্ড লাইব্রেরিতে অন্তর্ভুক্ত মান হাতিয়ার। ধারণাটি ছিল যে distutils2পুরানো পাইথন সংস্করণগুলির জন্য বিতরণ distutils2করা হবে packagingএবং পাইথন ৩.৩ এর নামকরণ করা হবে, এটি এটির স্ট্যান্ডার্ড লাইব্রেরিতে অন্তর্ভুক্ত করবে। এই পরিকল্পনাগুলি ইচ্ছাকৃত হিসাবে যায় নি, তবে এবং বর্তমানে distutils2এটি একটি পরিত্যক্ত প্রকল্প । সর্বশেষ প্রকাশটি ২০১২ সালের মার্চ মাসে ছিল এবং এর পাইপির হোম পৃষ্ঠাটি তার মৃত্যুর প্রতিফলন করতে অবশেষে আপডেট করা হয়েছে।

অন্যান্য:

অন্যান্য সরঞ্জাম রয়েছে, যদি আপনি আগ্রহী হন, পাইথন প্যাকেজিং ব্যবহারকারী গাইডে প্রকল্পের সংক্ষিপ্তসারগুলি পড়ুন । আমি তাদের সব তালিকা প্রস্তুত করবে না, যে পেজটি পুনরাবৃত্তি, এবং প্রশ্নের উত্তর দাও, যা ছিল মাত্র মিলে রাখার distribute, distutils, setuptoolsএবং distutils2

প্রস্তাবনা:

যদি এই সমস্ত কিছু আপনার কাছে নতুন হয় এবং আপনি কোথায় শুরু করবেন জানেন না, তবে আমি শিখারsetuptools পাশাপাশি pipএবং virtualenvযা সমস্ত একসাথে খুব ভালভাবে কাজ করে তা শেখার পরামর্শ দেব

আপনি মধ্যে খুঁজছেন যদি virtualenv, আপনি এই প্রশ্ন আগ্রহী হতে পারে: মধ্যে পার্থক্য কি venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, ইত্যাদি? । (হ্যাঁ, আমি জানি, আমি আপনার সাথে কান্না করছি))


2
@ মাকেরেমেন: মেলিং তালিকায় এই থ্রেডটি দেখুন ।
ফ্লিম

6
এবং এর চেয়ে ভাল আর খুঁজছেন না: 'Distribute' is a now deprecated fork of the 'Setuptools' project.@ পাইপিআই পৃষ্ঠা বিতরণ করুন।
কুর্জেডমেটাল

3
@ কুর্জেডমেটাল, সেটআপটুলস ভাবেন অনুসারে, সেটআপটুলস 0.7 উভয়ই ডিস্ট্রিবিউট এবং পুরানো সেটআপলগুলিকে মহাবিশ্বে পুনরুদ্ধার করবে subs সুতরাং জিনিসগুলি আসলে যথেষ্ট উন্নতি করতে প্রস্তুত!
জন ম্যাকডোনেল

8
পাইথন প্যাকেজিং ইউজার গাইড পাইথন প্যাকেজিং রাজ্যের সবচেয়ে আপ-টু-ডেট তথ্য থাকবে। এটি নিক কাফলান 2013 পাইকনে নোট করেছিলেন
ইমানুয়েলকোস্টিগান

1
@ ফ্লিম সর্বশেষ সম্পাদনাটি বেশ কিছুক্ষণ আগে। বেন্টো এখন কি পরিণত?
মার্টিন থোমা

251

আমি একজন ডিসটিলস রক্ষণাবেক্ষণকারী এবং ডিস্টুয়েলস 2 / প্যাকেজিং অবদানকারী। আমি কনফু ২০১১-এ পাইথন প্যাকেজিং সম্পর্কে একটি কথা বলেছিলাম এবং আজকাল আমি এর একটি বর্ধিত সংস্করণ লিখছি। এটি এখনও প্রকাশিত হয়নি, সুতরাং এখানে কিছু অংশ রয়েছে যা জিনিসগুলি সংজ্ঞায়িত করতে সহায়তা করবে।

  • প্যাকেজিংয়ের জন্য ডিস্ট্রিটিলগুলি হ'ল মানক সরঞ্জাম। এটি সাধারণ প্রয়োজনের জন্য বরং ভাল কাজ করে তবে এটি সীমিত এবং প্রসারিত করার জন্য তুচ্ছ নয়।

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

  • ডিস্ট্রিবিউট সেটআপটুলগুলির একটি কাঁটা যা বিকাশকারীরা অনুভব করেছিলেন যে এর বিকাশের গতি খুব ধীর এবং এটির বিবর্তন সম্ভব নয়। যখন একই গ্রুপ দ্বারা ডিস্টুটিস 2 শুরু হয়েছিল তখন এর বিকাশ যথেষ্ট গতিবেগ হয়েছিল। ২০১৩-আগস্ট আপডেট: বিতরণ সেটআপলগুলিতে ফিরে একত্রিত হয় এবং বন্ধ হয়ে যায়।

  • ডিস্টুটিলস 2 একটি নতুন ডিস্টিওলেটস লাইব্রেরি, সেটআপ সরঞ্জামগুলি (যার মধ্যে কিছু পিইপিগুলিতে পুঙ্খানুপুঙ্খভাবে আলোচনা করা হয়েছিল) থেকে নেওয়া এবং পাইপ দ্বারা অনুপ্রাণিত একটি বেসিক ইনস্টলার থেকে ডিস্টুলেটস কোডবেসের কাঁটাচামচ হিসাবে শুরু হয়েছিল। ডিস্টুটিস ২ আমদানি করতে আপনি যে প্রকৃত নামটি ব্যবহার packagingকরছেন তা পাইথন ৩.৩++ স্ট্যান্ডার্ড লাইব্রেরিতে বা distutils2২.৪+ এবং ৩.১-৩.২ এ রয়েছে। (শিগগিরই একটি ব্যাকপোর্ট পাওয়া যাবে)) ডিস্ট্রুটিলস 2 পাইথন ৩.৩ প্রকাশ করে নি, এবং এটি আটকে দেওয়া হয়েছিল।

অধিক তথ্য:

আমি আশা করি শীঘ্রই আমার গাইডটি শেষ করে ফেলব, এতে প্রতিটি লাইব্রেরির শক্তিশালী এবং দুর্বল পয়েন্ট এবং একটি রূপান্তর গাইড সম্পর্কে আরও তথ্য থাকবে।


1
মানচিত্রের (পিইপি) পরে ডিস্টুটিলস 2 সেটআপটুলগুলি / বিতরণ থেকে কিছু ভাল ধারণা নেয় বা না (উদাহরণস্বরূপ, আমি একজন জিএসওসি শিক্ষার্থীকে পরামর্শদাতা, যিনি একটি বিকাশ কমান্ড এবং স্বয়ংক্রিয় স্ক্রিপ্টস জেনারেশন যুক্ত করছেন) তবে এটি কখনও ড্রপ-ইন হবে না প্রতিস্থাপন: এমন কিছু অংশ রয়েছে যা আমরা চাই না (ডিম, ভিসিএস ইন্টিগ্রেশন ইত্যাদি)। OTOH, distutils2 এর কিছু জিনিস রয়েছে যা সেটআপলগুলি / বিতরণ করে না। রূপান্তর সহজ করার জন্য, আমি মনে করি বিতরণ বিকাশকারীরা সম্ভবত নতুন স্ট্যান্ডার্ড এবং সরঞ্জামগুলিকে সমর্থন করার জন্য ডিস্টুলেট 2 ব্যবহার করবেন; আমি সেটআপটুলস বিকাশকারীকে বলেছিলাম যে সে নতুন মানকে সমর্থন করতে চায় বলে আমি মনে করি think
এরিক আরাউজো

1
Ez_setup এ সব কোথায় পড়ে? এছাড়াও distutils2 এর স্থিতিতে কোনও আপডেট আছে?
জেমস ম্যাকমাহন

2
@ এরিকআরাউজো বিলম্বের কথা শুনে দুঃখিত। আমি সত্যিই এটি 3.4 জন্য সময় প্রস্তুত আশা করি! আমি পাইথনকে ভালবাসি , তবে প্যাকেজিং আমাকে সর্বদা প্রাচীরের বিপরীতে মাথা ঠেকিয়েছে। (অন্যান্য খবরে, আপনার গাইড কীভাবে আসছেন? এটি শেষ হলে আপনি কি উপরের উত্তরে এটি লিঙ্ক করতে পারেন?)
জেরিন

9
@ অ্যালেক্সিসহুটে এই ধরণের মন্তব্যটি যদি নীচের মন্তব্যে লিঙ্কটি ধারণ করে (তবে আপনি shareবোতামটি থেকে পেতে পারেন) ভাল হত ।
এরিকবওয়ার্ক ২:26

2
আপনার সম্ভবত উত্তরটি distributeসম্প্রতি আপডেট করা উচিত যা সম্প্রতি ফিরে এসেছিল setuptools। যে তথ্য প্রচলিত রয়েছে তা
পুরানো

5

দ্রষ্টব্য: উত্তর অবচিত, বিতরণ এখন অপ্রচলিত। পাইথন প্যাকেজিং কর্তৃপক্ষ গঠন হওয়ার পরে এবং এটি পরিষ্কার করার জন্য প্রচুর কাজ করেছে বলে এই উত্তরটি আর কার্যকর হবে না।


হ্যাঁ, আপনি এটি পেয়েছেন : -আমি এই মুহুর্তে পছন্দের প্যাকেজটি ডিস্ট্রিবিউট হ'ল এটি সেটআপটুলগুলির একটি কাঁটাচামচ, যা ডিস্টিওলেটগুলির মূল সংস্থান (মূল প্যাকেজিং সিস্টেম)। সেটআপলগুলি রক্ষণ করা যাচ্ছিল না তাই এটি কাঁটাচামচ করা হয়েছে এবং পুনরায় নামকরণ করা হয়েছিল, তবে এটি ইনস্টল করার সময় সেটআপলগুলির প্যাকেজের নামটি ব্যবহার করে! আমি মনে করি বেশিরভাগ পাইথন বিকাশকারীগণ এখন বিতরণ ব্যবহার করেন এবং আমি নিশ্চিত হয়ে বলতে পারি যে আমি এটি করি।


রেকর্ডের জন্য, আমি এই উত্তরটি গ্রহণ করেছি কারণ এটি আমাকে এখনকার পরিস্থিতি বলেছিল (এবং এটি হ'ল সম্পর্কটির প্রসার যা অন্য উত্তরের চিত্রটিতে কেবল উল্লেখ করা হয়নি)। এবং রাস্তার পাশে কোথাও আমি আরও জানতে পেরেছি যে ডকুমেন্টেশন নিজেই এটি কী বলার চেষ্টা করছে তা নিশ্চিত নয়।
ভিপিরিক

2
@ ভিপ্রিক, প্রকৃতপক্ষে, ডকুমেন্টেশনটি সত্যটি প্রতিফলিত করে যে অজগরটির এই দিকটি প্রবাহ / গণ্ডগোলের মতো অবস্থায় রয়েছে।
জুয়ানচোপাঞ্জা

2

আমি বুঝতে পারি যে আমি আপনার মূল সমস্যাটিতে সন্দেহাতীত অনুমানের সমাধান না করেই আপনার দ্বিতীয় প্রশ্নটির জবাব দিয়েছি:

আমি পাইথন 3-তে একটি ওপেন-সোর্স লাইব্রেরি (সিম্পাই, যদি কেউ ভাবছেন) পোর্ট করার চেষ্টা করছি এটি করার জন্য, পাইথন 3 তৈরি করার সময় আমাকে স্বয়ংক্রিয়ভাবে 2to3 চালানো দরকার।

আপনি পারে না প্রয়োজন । অন্যান্য কৌশলগুলি http://docs.python.org/dev/howto/pyporting এ বর্ণনা করা হয়েছে

এটি করার জন্য, আমাকে বিতরণ ব্যবহার করতে হবে,

আপনি পারে distutils :) কোড (না docstrings) সমর্থন বিল্ড-টাইম 2to3 রূপান্তর, একটি ভিন্ন পদ্ধতিতে যে বিতরণ মধ্যে: http://docs.python.org/dev/howto/pyporting#during-installation


ধন্যবাদ, যদিও রূপান্তরটি পরিচালনা করতে আমরা ইতিমধ্যে আমাদের স্ক্রিপ্ট লিখে সমস্যার সমাধান করার সিদ্ধান্ত নিয়েছি। এবং হ্যাঁ, আমি জানতাম যে 2to3 ব্যবহার করা ছাড়াও অন্যান্য বিকল্প রয়েছে, তবে সিমপাই একটি জটিল কোডবেস (প্রায় 200k + লাইন শেষ বার যাচাই করেছিলাম) এবং 2to3 ব্যবহার করা ছিল একমাত্র বাস্তববাদী কৌশল। আবারও ধন্যবাদ, যে কোনও ক্ষেত্রে!
ভিপিয়ারিক

2

2014 সালের শেষের দিকে এই প্রশ্নটি আপডেট করা যেখানে ভাগ্যক্রমে কন্টিনিয়ামের " কনডা " প্যাকেজ ম্যানেজার দ্বারা পাইথন প্যাকেজিং বিশৃঙ্খলা ব্যাপকভাবে পরিষ্কার করেছে ।

বিশেষত, কনডা দ্রুত কনডা " পরিবেশ " তৈরি করতে সক্ষম করে । পাইথনের বিভিন্ন সংস্করণ দিয়ে আপনি আপনার পরিবেশকে কনফিগার করতে পারেন। উদাহরণ স্বরূপ:

conda create -n py34 python=3.4 anaconda

conda create -n py26 python=2.6 anaconda

পাইথনের বিভিন্ন সংস্করণ সহ দুটি ("পাইয় 34" বা "পাই 26") পাইথন পরিবেশ তৈরি করবে।

এরপরে আপনি পাইথনের নির্দিষ্ট সংস্করণ সহ পরিবেশটি ডেকে আনতে পারেন:

source activate <env name>

এই বৈশিষ্ট্যটি আপনার ক্ষেত্রে বিশেষত কার্যকর বলে মনে হচ্ছে যেখানে আপনাকে পাইথনের বিভিন্ন সংস্করণ ব্যবহার করতে হবে।

অধিকন্তু, কনডায় নিম্নলিখিত বৈশিষ্ট্যগুলি রয়েছে:

  • পাইথন অগনস্টিক
  • ক্রস প্ল্যাটফর্ম
  • কোনও প্রশাসকের সুযোগ সুবিধার দরকার নেই
  • স্মার্ট নির্ভরতা ব্যবস্থাপনা (একটি স্যাট সমাধানকারী মাধ্যমে)
  • সি, ফোর্টরান এবং সিস্টেম স্তরের লাইব্রেরিগুলির সাথে সুন্দরভাবে ডিল করে যার সাথে আপনার লিঙ্ক থাকতে পারে

আপনি যদি বৈজ্ঞানিক কম্পিউটিং অঙ্গনে থাকেন তবে সেই শেষ পয়েন্টটি বিশেষভাবে গুরুত্বপূর্ণ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.