ন্যূনতম এবং সর্বাধিক সংস্করণ পরিসীমা সহ একটি প্যাকেজ ইনস্টল কীভাবে করবেন?


233

আমি ভাবছি যে পাইপ বলার কোনও উপায় আছে, বিশেষত প্রয়োজনীয় ফাইলগুলিতে, সর্বনিম্ন সংস্করণ ( pip install package>=0.2) এবং সর্বাধিক সংস্করণ যা কখনও ইনস্টল করা উচিত নয় (তাত্ত্বিক এপিআই pip install package<0.3:) উভয়ই প্যাকেজ ইনস্টল করতে পারে কিনা ।

আমি জিজ্ঞাসা করি কারণ আমি তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করছি যা সক্রিয় বিকাশে রয়েছে। আমি আমার পাইপ প্রয়োজনীয়তা ফাইলটি উল্লেখ করতে চাই যে এটি সর্বদা 0.5.x শাখার অতি সামান্যতম রিলিজ ইনস্টল করা উচিত তবে আমি চাই না যে পাইপ কখনও নতুন বড় সংস্করণগুলি (0.6.x এর মত) ইনস্টল করার চেষ্টা করবে না এপিআই আলাদা। এটি গুরুত্বপূর্ণ কারণ যদিও 0.6.x শাখাটি উপলব্ধ রয়েছে, তবুও ডিভগুলি 0.5.x শাখায় প্যাচ এবং বাগফিক্স প্রকাশ করছে, সুতরাং আমি package==0.5.9আমার প্রয়োজনীয় ফাইলগুলিতে একটি স্ট্যাটিক লাইন ব্যবহার করতে চাই না ।

এটা করার কোন উপায় আছে?

উত্তর:


301

আপনি করতে পারেন:

$ pip install "package>=0.2,<0.3"

এবং pipসেরা ম্যাচটি সন্ধান করবে, ধরে নেওয়া সংস্করণটি কমপক্ষে ০.২ এবং 0.3 এরও কম।

এটি পিপ প্রয়োজনীয়তা ফাইলগুলিতেও প্রযোজ্য । পিইপি 440 সংস্করণ স্পেসিফায়ারের সম্পূর্ণ বিবরণ দেখুন ।


মৃত লিঙ্ক। অফিসিয়াল ডকুমেন্টেশন এখানে
বেটগ্যামিট

45
রেকর্ডটির জন্য, আমি মনে করি "package>=0.2,<=0.3"খুব একটা অর্থবোধ করে না: আপনি কখন 0.2 এবং 0.3.0 উভয়ের সাথে ঠিক আছেন তবে 0.3 এর কোনও বাগফিক্স প্রকাশের সাথে নয়? আমি মনে করি "package>=0.2,<0.3"এটি আরও ভাল উদাহরণ, কারণ এটি বলার প্রচলিত ক্ষেত্রে প্রতিফলিত হয়েছে: "দয়া করে আমাকে বর্তমান গৌণ সংস্করণটির সর্বশেষ বাগফিক্স রিলিজ দিন, তবে স্বয়ংক্রিয়ভাবে আমাকে পরবর্তী ছোট ছোট সংস্করণে আপগ্রেড করবেন না, কারণ আমি এটি করতে চাই এটি সুস্পষ্টভাবে নিশ্চিত করে যে আমাকে প্রভাবিত করছে এমন কোনও কার্যকরী পরিবর্তন নেই ""
হেনরিক হিমবুর্গার

আপনি যদি এই উত্তরটি পছন্দ করেন তবে আপনি নীচে নীচে মুর্তিজ উত্তরটি পছন্দ করবেন! এটি পরীক্ষা করে দেখুন, ~=0.2এটি (ইমো) এর চেয়ে ভাল সমাধান।
ব্র্যাড রুট

1
@ ব্র্যাডরুট উদাহরণস্বরূপ এটি কী ~=0.2.1করবে তা সত্যিই অস্পষ্ট । হিসাবে সুস্পষ্ট হওয়া >=0.2,<0.3ভাল জিনিস কারণ এটি ঘটছে তা সত্যিই পরিষ্কার।
একিউম্যানাস

@ অ্যাকুমেনাস এমন কেউ আছেন যেগুলি প্রয়োজনীয় বিন্যাসের বৈশিষ্ট্যগুলি বুঝতে পারে এবং সংস্করণ কীভাবে কাজ করে তা ~=0.2.1প্রয়োজনীয় ফাইলগুলিতে লিখবেন না। এটি ব্যবহারকারীর ত্রুটি, ~=উপসর্গের কোনও অসুবিধা নয় ।
ব্র্যাড রুট

86

আপনি এটি ব্যবহার করতে পারেন:

pip install package==0.5.*

যা আরও নিয়মিত এবং পড়তে সহজ।


12
এটি requirements.txtআইএমও পরিচালনা করার একটি আরও ভাল উপায় । এর package==1.*পরিবর্তে package>=1.2প্যাকেজটির জন্য প্রধান সংস্করণ 2+ ইনস্টল করা থেকে পিপ প্রতিরোধ করে, যা মুখ্য সংস্করণ পরিবর্তনগুলি প্রায়শই পিছনের দিকে অসম্পূর্ণ থাকে বলেই প্রয়োজনীয়।
মাইকেল হেজে

10
দ্রষ্টব্য, এটি কোনও বিদ্যমান প্যাকেজ আপগ্রেড করে না। উদাহরণস্বরূপ, যদি আপনার ০.০.১ ইনস্টল করা থাকে তবে ০.০.২ সর্বশেষতম এবং আপনি 0.5 ইনস্টল চালান * - আপগ্রেড যোগ করা এটি সমাধান করে।
স্কিপাইলট

71

একটি মার্জিত পদ্ধতি হ'ল পিইপি 440~= অনুযায়ী সামঞ্জস্যপূর্ণ রিলিজ অপারেটরটি ব্যবহার করা । আপনার ক্ষেত্রে এটির পরিমাণ হবে:

package~=0.5.0

উদাহরণ হিসাবে, নিম্নলিখিত সংস্করণগুলি উপস্থিত থাকলে এটি চয়ন করতে পারে 0.5.9:

  • 0.5.0
  • 0.5.9
  • 0.6.0

স্পষ্টতার জন্য, প্রতিটি জুটি সমতুল্য:

~= 0.5.0
>= 0.5.0, == 0.5.*

~= 0.5
>= 0.5, == 0.*

আপনি কীভাবে সংক্ষিপ্ত সংস্করণগুলির জন্য এটি ব্যবহার করবেন? যেমন যদি একটি 2.2এবং পরিকল্পিত ভবিষ্যত থাকে তবে সেখানে তৃতীয় নম্বর না থাকা সত্ত্বেও 2.2.1কি ~=2.2.*মিলবে 2.2?
মাইক 'পোম্যাক্স' কামারম্যানস

1
@ মাইক'পোম্যাক্স-কামারম্যানস আপনার ~=2.2.0সেই ক্ষেত্রে ব্যবহার করা উচিত ( *আপনি ব্যবহার করলে অপারেটর কাজ করবে না ~=)। 2.2এবং 2.2.0(এবং 2.2.0.0, এবং তাই) প্যাকেজ ইনস্টল করার ক্ষেত্রে অভ্যন্তরীণভাবে একই জিনিস হিসাবে পরিচালনা করা হয়।
ik1ne

এটি কীভাবে নেস্টেড সংস্করণ সংখ্যার জন্য কাজ করে তা অত্যন্ত অস্পষ্ট ~=1.2.3। পরিবর্তে মাল্টি-ক্লজ ফর্মটি ব্যবহার করা অনেক বেশি স্পষ্ট এবং স্পষ্ট।
একিউম্যানাস

2
@ মিচম্যাকম্যাবার্স কেবল এটিই কাজ করে যদি আপনি চান এমন বৈশিষ্ট্যগুলি সেই বড় সংস্করণের প্রথম প্রকাশে উপস্থিত হয়েছিল যা সাধারণভাবে সত্য নয়। উদাহরণস্বরূপ, আপনি v1.2.0 এ যুক্ত হওয়া কোনও কিছুর উপর নির্ভর করছেন যদি, == 1.*ভুলভাবে v1.1.0 গ্রহণ করবেন। ~=(অথবা >=প্লাস <আপনি যদি পান যে কঠিন পড়তে) কারণ এটি সঠিকভাবে নির্দিষ্ট হচ্ছে উৎসাহিত অপারেটর উত্তম।
ম্যাক্সপিএম

1
@ ম্যাক্সপিএম এটি একটি ভাল পয়েন্ট। সুতরাং আমাদের == 1.*যদি একটি 1.2 সংস্করণ বৈশিষ্ট্য প্রয়োজন তবে ব্যবহারকারী ইতিমধ্যে 1.1 ইনস্টলড থাকতে পারে এবং ব্যর্থ হবে। আপনার প্রস্তাবিত (বা ) ~= 1.2বলা সমান । হ্যাঁ আপনি ঠিকই বলেছেন, এটি একটি সেরা অপারেটর, যেহেতু এটি আপনাকে একই লাইব্রেরির মধ্যে নতুন সংস্করণগুলিকে মঞ্জুরি দেওয়ার সময় কোনও লাইব্রেরির বিকাশিত সংস্করণটিকে লক্ষ্যবস্তু করতে দেয় । এই স্পষ্টির জন্য ধন্যবাদ! >= 1.2, < 2.0>= 1.2, == 1.*~=
মিচ ম্যাকমাবার্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.