পাইপ কমান্ড ব্যবহার করে প্রয়োজনীয়তা থেকে টেক্সট প্যাকেজগুলি আপগ্রেড করুন xt


111

আমি কীভাবে আমার সমস্ত পাইথন প্যাকেজগুলি পিপ কমান্ড ব্যবহার করে প্রয়োজনীয়গুলি.txt ফাইল থেকে আপগ্রেড করব?

নীচের কমান্ড দিয়ে চেষ্টা করেছেন

$ pip install --upgrade -r requirements.txt

যেহেতু, পাইথন প্যাকেজগুলি সংস্করণ নম্বর ( Django==1.5.1) এর সাথে সংযুক্ত করা হয় তারা আপগ্রেড করে বলে মনে হয় না। ম্যানুয়ালি প্রয়োজনীয়তা.টেক্সট ফাইল সম্পাদনা করার চেয়ে আরও ভাল পদ্ধতির কি নেই?

সম্পাদনা

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

কিন্তু, আমরা pip-toolsনিম্নলিখিত কমান্ডটি ব্যবহার করে এটি অর্জন করতে পারি ।

$ pip-review --auto

এটি প্রয়োজনীয়তাগুলি থেকে সমস্ত প্যাকেজগুলি স্বয়ংক্রিয়ভাবে আপগ্রেড করবে xt txt ( pip-toolsপাইপ ইনস্টল কমান্ড ব্যবহার করে ইনস্টল করতে নিশ্চিত করুন )।


7
পিপ-সরঞ্জামগুলি দুর্দান্ত কাজ করছে - আপডেটড সিনট্যাক্সটি হ'ল pip-compile -U requirements.txt
এরিক্রিড

উত্তর:


40

না। আপনার প্রয়োজনীয় ফাইলটি নির্দিষ্ট সংস্করণে পিন করা হয়েছে । আপনার প্রয়োজনীয়তা যদি সেই সংস্করণে সেট করা থাকে তবে আপনার সেই সংস্করণগুলির বাইরে আপগ্রেড করার চেষ্টা করা উচিত নয়। আপনি যদি প্রয়োজন আপগ্রেড করার, তাহলে আপনি আপনার প্রয়োজনীয়তা ফাইলে আনপিন করা হয়েছে সংস্করণ স্যুইচ করতে হবে।

উদাহরণ:

lxml>=2.2.0

এটি lxML কে ২.২.০ এর চেয়ে নতুন সংস্করণে আপগ্রেড করবে

lxml>=2.2.0,<2.3.0

এটি lxML কে 2.2.0 এবং 2.3.0 এর মধ্যে অতি সাম্প্রতিক সংস্করণে আপগ্রেড করবে।


2
আমি নিম্নলিখিতটি করতে সহায়ক পেয়েছি। 1. মুছে ফেলা 2. একই নাম (পথ সব পিপ প্যাকেজ পরিষ্কার করা) সঙ্গে একটি নতুন এক তৈরি হয়েছে 3. -r requirements.txt 4. ইনস্টল requirements.txt 4. পিপ মধ্যে> = সব == প্রতিস্থাপন venv
zhukovgreen

sed 's/==/>=/g' requirements.txt > TMP_FILE && mv TMP_FILE requirements.txt সব প্রতিস্থাপন করবে ==সঙ্গে>=
philshem

80

আপনি চেষ্টা করতে পারেন:

pip install --upgrade --force-reinstall -r requirements.txt

আপনি ইনস্টল করা প্যাকেজটিকে এড়িয়ে উপস্থাপন করতে এবং নতুনটি ইনস্টল করতে পারেন:

pip install --ignore-installed -r requirements.txt

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

@ ভৌমকর আপনি কঠোর হয়েছিলেন আমি ভেবেছিলাম আপনি একই সংস্করণটি পুনরায় ইনস্টল করতে চান (সম্ভবত ব্যাকপোর্ট ফিক্স যোগ করতে)
ফ্রিল্যান্সার

1
দ্বিতীয় কমান্ডটি আমি যা খুঁজছিলাম। লক্ষ্য করুন -Iএবং --ignore-installedএটি একই পতাকা এবং অবশ্যই এটি ,সেখানে থাকা বৈধ নয় । এই পদ্ধতিতে কোনও ডাউনগ্রেড ইনস্টল করার সময় ঘটবে না এবং প্রয়োজনীয়তার ইনস্টলেশন শেষ হওয়ার পরে কেউ ইনস্টলড প্যাকেজগুলি ব্যবহার করে আপগ্রেড করতে পারে pip-review --auto
এক্সো

79

আমি ইতিমধ্যে এই প্রশ্নের উত্তর এখানে । আমার সমাধানটি এখানে:

প্যাকেজ দ্বারা প্যাকেজ আপগ্রেড করার এবং প্রয়োজনীয়তা.টিএসটি ফাইল আপডেট করার সহজ কোনও উপায় ছিল না বলে আমি এই পাইপ-আপগ্রেডারটি লিখেছি যা নির্বাচিত প্যাকেজগুলির (বা সমস্ত প্যাকেজ) আপনার requirements.txtফাইলের সংস্করণগুলিও আপডেট করে

স্থাপন

pip install pip-upgrader

ব্যবহার

আপনার ভার্চুয়ালেনভকে সক্রিয় করুন (গুরুত্বপূর্ণ, কারণ এটি বর্তমান ভার্চুয়ালেনভে আপগ্রেড হওয়া প্যাকেজগুলির নতুন সংস্করণ ইনস্টল করবে)।

cd আপনার প্রকল্প ডিরেক্টরিতে প্রবেশ করুন, তারপরে চালান:

pip-upgrade

উন্নত ব্যবহার

প্রয়োজনীয়তাগুলি যদি কোনও মানহীন স্থানে স্থাপন করা হয় তবে সেগুলি আর্গুমেন্ট হিসাবে প্রেরণ করুন:

pip-upgrade path/to/requirements.txt

আপনি যদি প্যাকেজটি আপগ্রেড করতে চান তা যদি আপনি ইতিমধ্যে জানেন তবে কেবল তাদের আর্গুমেন্ট হিসাবে প্রেরণ করুন:

pip-upgrade -p django -p celery -p dateutil

আপনার যদি প্রাক-প্রকাশ / পোস্ট-রিলিজ সংস্করণে আপগ্রেড করতে --prereleaseহয় তবে আপনার আদেশে যুক্তি যুক্ত করুন ।

সম্পূর্ণ প্রকাশ: আমি এই প্যাকেজটি লিখেছি।


5
গ্রেট! অবাক করা বিষয় যে এই জাতীয় ফাংশনটি সরাসরি
পিপে

5
মার্জিত! অতি-খুশী আমি এটিকে স্ক্রোল করেছি: পি
পালসজেট

3
আমি কেবল এটি ব্যবহার করেছি এবং এফ-স্ট্রিংয়ের পরে এটি সেরা জিনিস the
পিয়েরে.সাসৌলাস

1
দুর্দান্ত সরঞ্জাম ধন্যবাদ.
এমসজারো

খুব দরকারী সরঞ্জাম! আমি পুর নামে আরও একটি প্যাকেজ পেয়েছি যা পিনযুক্ত সংস্করণগুলিকেও
উন্নত করে

4

পূর্বাভাসযোগ্য বিল্ডগুলি রাখার জন্য আমি আপনার সমস্ত নির্ভরতা হিমিয়ে দেওয়ার পরামর্শ দিচ্ছি ।

এটি করার সময়, আপনি একবারে সমস্ত নির্ভরতা আপডেট করতে পারেন :

sed -i '' 's/==/>=/g' requirements.txt
pip install -U -r requirements.txt
pip freeze > requirements.txt

রয়ে উপরে সম্পন্ন হলে, পরীক্ষা প্যাকেজ নতুন সেট সঙ্গে আপনার প্রোজেক্ট এবং অবশেষে কমিটrequirements.txt সংগ্রহস্থলে ফাইল।


3

আমাকে ঠিক একই কাজটি করতে হয়েছিল ... কাজটি করার জন্য এই ছোট্ট ওয়ান-লাইনারটি ব্যবহার করেছেন:

packages=$(cat requirements.txt | sed 's/==.*//g'); echo $packages | xargs pip3 install -U; freeze=$(pip3 freeze); for p in $(echo $packages); do echo $freeze | grep -E "^${p}==" >> requirements.new; done

যা:

  • packages=$(cat requirements.txt | sed 's/==.*//g') প্রয়োজনীয়গুলি.txt (সংস্করণ অপসারণ) এ বর্তমান প্যাকেজগুলির নামের একটি তালিকা তৈরি করে।
  • echo $packages | xargs pip3 install -U তারপরে আপগ্রেড করার জন্য সমস্ত প্যাকেজগুলি পিপ 3-তে আর্গুমেন্ট হিসাবে পাস করে।
  • freeze=$(pip3 freeze); প্রয়োজনীয়তা.txt এর জন্য প্রয়োজনীয় বিন্যাসে বর্তমান সমস্ত প্যাকেজ সংস্করণ পান
  • for p in $(echo $packages) তারপরে প্যাকেজের নামগুলি পুনরাবৃত্তি করে
    • echo $freeze | grep -E "^${p}==" >> requirements.new পাইপ ফ্রিজ আউটপুট থেকে প্যাকেজ সংস্করণ লাইন পায় যা প্যাকেজের সাথে মেলে এবং নতুন প্রয়োজনীয়তাগুলিতে লেখায়। txt

এটির মূল প্রয়োজনীয়তার ক্রম সংরক্ষণের অতিরিক্ত সুবিধা রয়েছে t txt। :)

আশাকরি এটা সাহায্য করবে!


2

যেহেতু আমি ব্যাশ ব্যবহার করে এটি করতে পারি না, তাই কোনও সংস্করণ ছাড়াই একটি নতুন প্রয়োজনীয় ফাইল তৈরি করতে এবং এটি ব্যবহার করার জন্য আমি অজগর মডিউলটি লিখেছিলাম:

data = open('requirements-prod.pip', 'r')
data2 = open('requirements-prod-no-version.pip', 'w')
for line in data.readlines():
    new_line = line[:line.index('==')]
    data2.write(new_line + '\n')
data2.flush()

তারপরে নতুন ফাইল থেকে libs ইনস্টল করুন pip install -U -r requirements-prod-no-version.pip

শেষ পর্যন্ত সংস্করণগুলি মূল ফাইলে জমা করুন pip freeze > requirements-prod.pip


2

আর একটি সমাধান হ'ল আপগ্রেড-প্রয়োজনীয়তা প্যাকেজটি ব্যবহার করা

pip install upgrade-requirements

এবং তারপরে চালান:

upgrade-requirements

এটি সর্বশেষ সংস্করণগুলিতে নয় এমন সমস্ত প্যাকেজ আপগ্রেড করবে এবং শেষে একটি আপডেট প্রয়োজনীয়তাও তৈরি করবে t txt শেষে xt


0
  • 1) reqs.txt থেকে পাইপ ইনস্টল করা ফাইলগুলিকে আপগ্রেড করতে == প্রতিস্থাপনে > = যুক্ত করুন এটি অনুরোধ করা লাইব্রেরির সর্বাধিক টু-ডেট সংস্করণ ইনস্টল করে এখানে যে সংস্করণটি আপনি অনুরোধ করছেন তার চেয়ে বড় বা সমান lib ইনস্টল করতে পিনকে বলবে

    1.a) ** থ্রেডের জন্য আমার উত্তর ** প্রতিদিনের পুনঃসূচনাটিতে py -m pip install -r reqs.txt যুক্ত করে ... বা প্রকৃতির এমন কোনও কিছু যা আপনি নিজের ইনস্টল করা লিবস আপডেট করতে পারেন। অ্যান্ডি পারফেক্টলি দ্বারা সংক্ষেপিত

    - আমার কারণ এই থ্রেডে প্রবেশের জন্য ভার্চুয়াল এনভিভি বেস পাইপ আপডেট করার পদ্ধতি সম্পর্কে তথ্য সন্ধান করা ছিল (সাধারণত আমার জন্য 10.0.03 ??)

আমি দুটি সমাধানের মধ্যে একটির সমাধান পেতে সক্ষম হয়েছি এমন একটি ইস্যুতে সন্তুষ্ট হওয়ার আশায়

উ: ভেনভের সৃষ্টি || খ। প্রয়োজনীয় libs ইনস্টলেশন

অ্যান্ডিকে ধন্যবাদ আমি সন্তুষ্ট হলাম বি

পিপ যোগ করে > = সংস্করণ অনুরোধ মধ্যে reqs.txt

নতুন ভার্চুয়াল-পরিবেশের ইনস্ট্যান্টেশন উপর || পূর্ববর্তী ভেনভের পুনরায় ইনস্ট্যান্টেশন ation

  1. py -m venv devenv

সেট আপ নতুন দেব env

  1. evenv\scripts\activate.bat

dev env সক্রিয় করা

  1. python -m pip install -r requirenments.txt

বেস libs ইনস্টল করতে

yeilds আউটপুট

সংগ্রহ পিপ > = 20.0.2 ((লাইন -r requirenments.txt থেকে 1 টি)) ব্যবহার ক্যাশে> https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3- কেউ-any.whl

বিদ্যমান ইনস্টলেশন পাওয়া গেছে: পিপ 10.0.1

পাইপ -10.0.1 আনইনস্টল করা:

 Successfully uninstalled pip-10.0.1
 Successfully installed pip-20.0.2

মস্তিষ্কের ডাম্পের জন্য দুঃখিত, আশা করি এটি কাউকে সহায়তা করে :)

🤳 অস্টিন 👨‍🎤🚀🥊


0

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

একটি উদাহরণ requirements.txtএটি দেখতে হবে (~ এর অর্থ সামঞ্জস্যপূর্ণ):

Pillow==6.2.2
requests~=2.22.0
youtube_dl

তারপরে টার্মিনালে কমান্ডটি ব্যবহার করুন pip install --upgrade -r requirements.txt

এটি নিশ্চিত করে যে বালিশটি 6.২.২ এ থাকবে, অনুরোধগুলি সর্বশেষতম ২.২২.x (যদি উপলব্ধ থাকে) তে আপগ্রেড করা হবে এবং ইতিমধ্যে না থাকলে ইউটিউব-ডিএল-এর সর্বশেষ সংস্করণ ইনস্টল করা হবে।


0

আমি অনুমান করি যে সহজ সমাধানটি প্রয়োজনীয়তাগুলি তৈরি করছে t

pip freeze | sed 's/==/>=/' > requirements.txt

-1

আপনি যদি আপনার জাঙ্গো প্রকল্পে কোনও কিছু ইনস্টল করেন এবং ইনস্টলেশন শেষে আপনি আপনার প্রয়োজনীয় ফাইলটি আপডেট করতে চান তবে এই আদেশটি আপনাকে প্রয়োজনীয়তাটি আপডেট করতে পারে xt txt ফাইল পিপ ফ্রিজ> आवश्यकता.txt

আপনার প্রজেক্টে যদি আপনার প্রয়োজনীয় ফাইল উপস্থিত না থাকে আপনি নতুন প্রয়োজন তৈরি করার জন্য এই কমান্ডটি ব্যবহার করতে পারেন t


এটি একটি খারাপ ধারণা হ'ল এটি আপনার সমস্ত প্রয়োজনীয়তার প্রয়োজনীয়তাও যুক্ত করে দেবে, ফলস্বরূপ অকারণে বড় প্রয়োজনের ফাইল তৈরি হবে। এরপরে যদি আপনি একটি একক নির্ভরতা আপডেট করার সিদ্ধান্ত নেন তবে আপনি সম্ভবত প্যাকেজটির কারণে আপনার প্রয়োজনীয় ফাইলগুলিতে কোন অন্যান্য প্রয়োজনীয়তা যুক্ত হয়েছিল তা না জানলে সংস্করণ বিরোধগুলি হতে পারে।
দাঙ্গা করা হয়েছে

-10

আমি নীচের মতো প্রয়োজনীয়তাগুলি। টেক্সট সম্পাদনা করি এবং $ sh ./requirements.txt চালাচ্ছি

pip install -U amqp;
pip install -U appdirs;
pip install -U arrow;
pip install -U Babel;
pip install -U billiard;
pip install -U celery;
pip install -U Django;
pip install -U django-cors-headers;
pip install -U django-crispy-forms;
pip install -U django-filter;
pip install -U django-markdown-deux;
pip install -U django-pagedown;
pip install -U django-timezone-field;
pip install -U djangorestframework;
pip install -U fcm-django;
pip install -U flower;
pip install -U gunicorn;
pip install -U kombu;
pip install -U Markdown;
pip install -U markdown2;
pip install -U packaging;

3
এটি অ্যান্টি-প্যাটার্নের আদর্শ উদাহরণ। এখানে কী ভুল হয়েছে: 1) প্রয়োজনীয়তা.txt একটি .txt ফাইল, তবে আপনি এটি সম্পাদনযোগ্য 2 করে রেখেছেন)। একটি সহজ পাইপ ইনস্টল -r প্রয়োজনীয়তা রয়েছে। Txt কমান্ড। সুতরাং আপনি শুধুমাত্র আপনার প্রকল্পের নির্ভরতা তালিকাভুক্ত করার জন্য প্রয়োজনীয়তা.টিএসটি ফাইল ব্যবহার করতে পারেন। ৩) আপনি প্যাকেজগুলির সংস্করণ ব্যবহার করছেন না। 4) একটি সাধারণ প্যাটার্ন নয়, অন্যান্য বিকাশকারীরা এটি কীভাবে ব্যবহার করবেন সে সম্পর্কে কিছুই করেন না। 5) সিআই / সিডি পাইপলাইনগুলির সাথে ব্যবহার করা শক্ত। দয়া করে এই উদাহরণটি ব্যবহার করবেন না
ফ্যানিগুর্ট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.