.Ml ফাইল সহ কীভাবে বিদ্যমান কোনন্ডা পরিবেশ আপডেট করা যায়


135

কীভাবে প্রাক-বিদ্যমান কনডা পরিবেশকে অন্য .ml ফাইলের সাথে আপডেট করা যায়। এই অত্যন্ত সহায়ক, অর্থাত্ প্রকল্প একাধিক প্রয়োজন ফাইলে যখন কাজ base.yml, local.yml, production.yml, ইত্যাদি

উদাহরণস্বরূপ, নীচে একটি base.ymlফাইলের মধ্যে কনডা-ফোর্স, কনডা এবং পাইপ প্যাকেজ রয়েছে:

base.yml

name: myenv
channels:
  - conda-forge
dependencies:
  - django=1.10.5
  - pip:
    - django-crispy-forms==1.6.1

প্রকৃত পরিবেশের সঙ্গে নির্মিত হয়: conda env create -f base.yml

পরে, অতিরিক্ত প্যাকেজগুলিতে যুক্ত করা দরকার base.yml। আর একটি ফাইল, বলুন local.yml, সেই আপডেটগুলি আমদানি করা দরকার।

এটি সম্পাদনের পূর্ববর্তী প্রচেষ্টাগুলির মধ্যে রয়েছে:

local.ymlআমদানি সংজ্ঞা সহ একটি ফাইল তৈরি করা হচ্ছে :

channels:

dependencies:
  - pip:
    - boto3==1.4.4
imports:
  - requirements/base. 

এবং তারপরে কমান্ডটি চালান : conda install -f local.yml.

এটা কাজ করে না. কোন চিন্তা?


বর্তমানে সক্রিয় পরিবেশকে আপডেট করা কি সম্ভব ?? আমি কেবল এটি চেষ্টা করেছি কিন্তু আপডেটটি yML ফাইলের নামের পরিবেশে গেছে to
সেরেন

উত্তর:


200

কনডা এনভির আপডেট ব্যবহার করে দেখুন :

conda activate myenv
conda env update --file local.yml

বা পরিবেশ সক্রিয় করার প্রয়োজন ছাড়াই (ধন্যবাদ @ নুমসসঙ্গুইস):

conda env update --name myenv --file local.yml

12
আপনার -fএবং এর মধ্যে সমান চিহ্নের দরকার নেই file.yml। সমান চিহ্নটি সরিয়ে ফেলা হলে .ymlফাইলনেমে ট্যাব সমাপ্তির কাজ হবে ।
বলপয়েন্টবেইন

4
--name env_nameকোনও name: fooট্যাগ উপেক্ষা করার জন্য যুক্ত করুন local.yml। এছাড়াও প্রথমে মায়েনভকে সক্রিয় করার প্রয়োজনকে বাধা দেয়। ফুল কমান্ড প্রয়োগ করুন: conda env update --name env_name --file local.yml থেকে: stackoverflow.com/a/45525593/3399066 এর মন্তব্যে
NumesSanguis

1
অতি সাম্প্রতিক কনডা সংস্করণে আমি মনে করি আমরা "সোর্স অ্যাক্টিভেট মাইএনভ" এর পরিবর্তে "কনডা অ্যাক্টিভেট মাইএনভ" ব্যবহার করি
teter123f

30

প্রস্তাবিত উত্তরটি আংশিকভাবে সঠিক। আপনি যোগ করতে হবে --prune এছাড়াও আনইনস্টল প্যাকেজ যে environment.yml থেকে সরানো হয়েছে বিকল্প। সঠিক আদেশ:

conda env update -f local.yml --prune

পাইপ ইনস্টল করা নির্ভরতা অপসারণ করতে এমনকি - প্রিন পতাকাটি যথেষ্ট নয় ...
জিন পল

সত্য। আমি মনে করি এটি কনডা নির্ভরতা সরিয়ে ফেলবে তবে পিপের নীচে তালিকাভুক্ত নয়
ব্লিঙ্ক করুন

22

অ্যালকমিডের উত্তরটি সঠিক লাইনে রয়েছে তবে আমি খুঁজে পেয়েছি যে পরিবেশ ইতিমধ্যে সক্রিয় থাকলে কনডা নতুন নির্ভরতা ইনস্টল করতে ব্যর্থ হয়েছে। পরিবেশকে নিষ্ক্রিয় করা প্রথমে এর সমাধান করে:

source deactivate;
conda env update -f whatever.yml;
source activate my_environment_name; # Must be AFTER the conda env update line!

4
কনডা কীভাবে জানতে পারে যে কোন এনভিটি আপডেট করা যদি এটি বর্তমানে সক্রিয় নয়?
থমাস ফসকঙ্কার

5
@ থমাস ফাউসঙ্কানগার আপনি এটি দিয়ে স্পষ্টভাবে উল্লেখ করতে পারেন -n <environment name>, তবে ডিফল্টরূপে এটি প্রত্যাশিত পরিবেশের সাথে কাজ করা বলে মনে হচ্ছে (সম্ভবত সর্বাধিক সক্রিয়, অথবা কেবলমাত্র একটি ডিফল্ট পরিবেশ পছন্দ)
ডেভ

18
@ থমাস ফাউসঙ্কঞ্জার যদি পরিবেশের নামটি কনডা দ্বারা রফতানি করা হয় তবে ওয়াইএএমএল ফাইলে নির্দিষ্ট করা আছে।
থমাস

আমি ভেবেছিলাম যে এই প্রশ্নের পুরানো পয়েন্টটি হ'ল ইয়ামল ফাইলটিতে নির্দিষ্ট করা একটি আলাদা পরিবেশকে আপডেট করা।
গিয়াকোমো

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