পাইথন পরিবেশের জন্য কনডা, বা কনডা-ফরজ ব্যবহার করা উচিত?


127

Condaএবং conda-forgeউভয়ই পাইথন প্যাকেজ পরিচালক। উভয় ভান্ডারে একটি প্যাকেজ উপস্থিত থাকলে উপযুক্ত পছন্দটি কী? উদাহরণস্বরূপ, জ্যাঙ্গো যে কোনও একটি দিয়ে ইনস্টল করা যেতে পারে, তবে উভয়ের মধ্যে পার্থক্যটি বেশ কয়েকটি নির্ভরশীলতা (কনডা-ফোর্জে রয়েছে আরও অনেকগুলি)। এই পার্থক্যগুলির জন্য কোনও ব্যাখ্যা নেই, এমনকি একটি সাধারণ READMEও নয়।

কোনটি ব্যবহার করা উচিত? কনডা নাকি কনডা-ফোরজ? এটা কোন ব্যাপার?


5
"কন্ডা এবং কনডা-ফোর্জি উভয়ই পাইথন প্যাকেজ পরিচালক" " আমি সত্য মনে করি না। আমি মনে করি না যে তারা এমনকি জিনিস একই বিভাগে। condaএকটি প্যাকেজ পরিচালক এবং conda-forgeএকটি চ্যানেল। এই প্রশ্ন জিজ্ঞাসা করা হতে পারে যখন সত্য ছিল?
এন্ডোলিথ

উত্তর:


202

সংক্ষিপ্ত উত্তরটি হ'ল, আমার অভিজ্ঞতায় সাধারণত, আপনি যা ব্যবহার করেন তা বিবেচ্য নয়।

দীর্ঘ উত্তর:

সুতরাং conda-forgeএকটি অতিরিক্ত চ্যানেল প্যাকেজ ইনস্টল করা হতে পারে যা থেকে। এই অর্থে, এটি ডিফল্ট চ্যানেল বা লোকেদের প্যাকেজ পোস্ট করেছে এমন চ্যানেলের অন্য কয়েকশ (হাজার?) এর চেয়ে বেশি বিশেষ কিছু নয়। আপনি যদি https://anaconda.org এ সাইন আপ করেন এবং নিজের কন্ডা প্যাকেজ আপলোড করেন আপনি নিজের নিজস্ব চ্যানেল যুক্ত করতে পারেন ।

এখানে আমাদের পার্থক্যটি করা দরকার, যা আমি মনে করি যে আপনি condaক্রস-প্ল্যাটফর্ম প্যাকেজ ম্যানেজার এবং conda-forgeপ্যাকেজ চ্যানেলের মধ্যে প্রশ্নে আপনার বাক্য বানানো থেকে পরিষ্কার নন । condaসফটওয়্যারটির মূল বিকাশকারী অ্যানাকোন্ডা ইনক। (পূর্বে কন্টিনাম আইও) প্যাকেজের একটি পৃথক চ্যানেল বজায় রাখে, conda install packagenameকোনও বিকল্প পরিবর্তন না করে টাইপ করার সময় এটি ডিফল্ট is

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

conda install -c some-channel packagename

অবশ্যই, প্যাকেজটি সেই চ্যানেলে থাকতে হবে। এই উপায়টি ইনস্টল হবে packagenameএবং এর সমস্ত নির্ভরতা থেকে some-channel। পর্যায়ক্রমে, আপনি নির্দিষ্ট করতে পারেন:

conda install some-channel::packagename

প্যাকেজটি এখনও বিদ্যমান রয়েছে some-channel, তবে এখন কেবল packagenameএখান থেকে টানা হবে some-channel। নির্ভরতা মেটাতে প্রয়োজনীয় যে কোনও প্যাকেজ আপনার চ্যানেলগুলির ডিফল্ট তালিকা থেকে অনুসন্ধান করা হবে।

আপনার চ্যানেল কনফিগারেশনটি দেখতে, আপনি লিখতে পারেন:

conda config --show channels

চ্যানেলগুলির সাহায্যে অনুসন্ধান করা অর্ডারটি আপনি নিয়ন্ত্রণ করতে পারেন conda config। তুমি লিখতে পারো:

conda config --add channels some-channel

চ্যানেলটি কনফিগারেশন তালিকার some-channelশীর্ষে যুক্ত করতে channels। এটি some-channelসর্বোচ্চ অগ্রাধিকার দেয় । অগ্রাধিকার নির্ধারণ করে ( অংশে ) যখন একাধিক চ্যানেলের নির্দিষ্ট প্যাকেজ থাকে তখন কোন চ্যানেল নির্বাচন করা হয়। তালিকার শেষে চ্যানেলটি যুক্ত করতে এবং এটিকে সর্বনিম্ন অগ্রাধিকার দিতে টাইপ করুন

conda config --append channels some-channel

আপনি যে চ্যানেলটি যুক্ত করেছেন তা যদি আপনি মুছে ফেলতে চান তবে আপনি লিখে লিখে এটি করতে পারেন

conda config --remove channels some-channel

দেখা

conda config -h

আরও বিকল্পের জন্য।

এই সমস্ত বলেছে, অ্যানাকোন্ডা পরিচালিত conda-forgeচ্যানেলের পরিবর্তে চ্যানেলটি ব্যবহারের চারটি প্রধান কারণ রয়েছে defaults:

  1. চ্যানেলে থাকা প্যাকেজগুলি আপ-টু-ডেট conda-forge হতে পারেdefaults
  2. conda-forgeচ্যানেলে এমন প্যাকেজ রয়েছে যা থেকে পাওয়া যায় নাdefaults
  3. আপনি যেমন একটি নির্ভরতা ব্যবহার করতে ইচ্ছুক থাকেন openblas(থেকে conda-forge) পরিবর্তে mkl(থেকে defaults)।
  4. আপনি যদি এমন একটি প্যাকেজ ইনস্টল করছেন যা একটি সংকলিত লাইব্রেরির প্রয়োজন (যেমন, কোনও সি এক্সটেনশান বা একটি সি লাইব্রেরির চারপাশে একটি মোড়ক), বাইনারিজনিত কারণে কোনও একক চ্যানেল থেকে পরিবেশে সমস্ত প্যাকেজ ইনস্টল করা হলে এটি অসুবিধাগুলির সম্ভাবনা হ্রাস করতে পারে বেস সি লাইব্রেরির সামঞ্জস্যতা (তবে এই পরামর্শটি ভবিষ্যতের পুরানো / পরিবর্তন হতে পারে)।

1
ধন্যবাদ! আমার দুটি সম্পর্কিত প্রশ্ন রয়েছে: 1. কোন চ্যানেলটি চেষ্টা করা ভাল এবং কীভাবে আমি তা জানতে পারি; ২. একটি চ্যানেলে কনফিগার করার পরে, আমি কীভাবে এটিকে ডিফল্টে পুনরায় সেট করতে পারি?
ড্যানিয়েল

1
@Kenny আপনি প্যাকেজ আপনি চান জন্য অনুসন্ধান করা উচিত আপনার প্রথম প্রশ্নের উত্তর দেওয়ার জন্য anaconda.org কর এবং দেখ যা চ্যানেল প্যাকেজ আছে। আমি আপনার দ্বিতীয় প্রশ্নের উত্তর দেওয়ার জন্য সম্পাদনা করেছি। তবে, আমি এটিও নোট করব যে আপনি যদি কোনও চ্যানেল থেকে একটি একক প্যাকেজ ইনস্টল করতে চান conda install -c some-channel packagenameতবে কমান্ডটি লেখার
উপায়টি

এটা অসাধারণ! সমর্থিত মডিউল, সতেজতা, কভারেজ ইত্যাদির # শর্তে কনডা-ফোর্জ এবং কন্ডার মধ্যে একটি তুলনা পাওয়া যায় কি?
রাটার হাফস্টে

1
এর mklচেয়ে দ্রুত নয় openblas?
এন্ডোলিথ

3
@ এন্ডোলিথ হতে পারে, তবে 1) সম্ভবত কেবলমাত্র ইন্টেল প্রসেসর এবং 2) এটি মুক্ত উত্স নয়
দার্থবিথ

4

অ্যানাকোন্ডা তাদের পরিষেবার শর্তাদি পরিবর্তন করেছে যাতে "ভারী বাণিজ্যিক ব্যবহারকারীদের" অর্থ প্রদান করতে হয়, এতে conda-forgeচ্যানেল অন্তর্ভুক্ত থাকে না ।

আপনি conda-forgeযদি ব্যবহারের জন্য অর্থ প্রদান করতে না চান তবে আপনি সম্ভবত আটকে থাকতে চাইবেন। দস্তাবেজে যেমন বলা হয়েছে :

conda config --add channels conda-forge
conda config --set channel_priority strict
conda install <package-name>

এছাড়াও আপনি ব্যবহার করতে পারে miniforge যা হয়েছে conda-forgeডিফল্ট চ্যানেল, এবং সমর্থন ppc64le এবং অন্যান্য স্বাভাবিক বেশী হিসাবে হিসাবে aarch64 প্ল্যাটফর্মের।


3

কনডা-ফরজ চ্যানেলটি এমন যেখানে আপনি প্যাকেজগুলি খুঁজে পেতে পারেন যা কনডা জন্য নির্মিত হয়েছে তবে আনুঙ্কাডা সরকারী আনকোন্ডা বিতরণের অংশ হতে পারে না।

সাধারণত, আপনি এগুলির যে কোনওটি ব্যবহার করতে পারেন।


1

কিছু পাইথন লাইব্রেরি রয়েছে যা আপনি conda installসাধারণের সাথে ইনস্টল করতে পারবেন না কারণ আপনি কনডা-ফোর্জি প্রয়োগ না করে চ্যানেল উপলভ্য নয়। আমার অভিজ্ঞতা থেকে, পাইপটি কন্ডার চেয়ে বিভিন্ন চ্যানেল উত্সগুলিতে সন্ধান করা আরও সাধারণ। উদাহরণস্বরূপ, আপনি যদি ইনস্টল করতে চান তবে আপনি python-constraintএটি মাধ্যমে pip installকরতে পারেন তবে এটি ** কনড ** এর মাধ্যমে ইনস্টল করতে পারেন। আপনাকে চ্যানেলটি নির্দিষ্ট করতে হবে - conda-forge

conda install -c conda-forge python-constraint // works

কিন্তু না

conda install python-constraint

বিভ্রান্তিকর উত্তর। পাইপ ইনস্টলিং কনডোর নিজস্ব প্যাকেজ পরিচালনা এবং নির্ভরতা যাচাইকরণের বাইরে প্যাকেজটি নেয়, যার অর্থ আপনাকে এটি ম্যানুয়ালি পরিচালনা করতে হবে (এবং সম্ভবত পিনপ conda update --allইনস্টল করা প্যাকেজটি আপডেট করবে না
জিন মনেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.