আমি আমার একটি ভার্চুয়ালনেভস ঠিক করার চেষ্টা করছি - আমি ইনস্টল করা লাইব্রেরিগুলির সমস্তগুলিকে পুনর্নির্মাণ করতে চাই যা উত্পাদন মেলে match
পাইপ দিয়ে এটি করার কি দ্রুত এবং সহজ উপায় আছে?
আমি আমার একটি ভার্চুয়ালনেভস ঠিক করার চেষ্টা করছি - আমি ইনস্টল করা লাইব্রেরিগুলির সমস্তগুলিকে পুনর্নির্মাণ করতে চাই যা উত্পাদন মেলে match
পাইপ দিয়ে এটি করার কি দ্রুত এবং সহজ উপায় আছে?
উত্তর:
আমি এই স্নিপেটকে বিকল্প সমাধান হিসাবে পেয়েছি। এটি ভার্চুয়ালেনভের পুনর্নির্মাণের চেয়ে গ্রন্থাগারগুলিকে আরও মুগ্ধকর অপসারণ:
pip freeze | xargs pip uninstall -y
আপনি যদি ভিসিএসের মাধ্যমে প্যাকেজ ইনস্টল করে থাকেন তবে আপনাকে সেই লাইনগুলি বাদ দিতে হবে এবং ম্যানুয়ালি প্যাকেজগুলি অপসারণ করতে হবে (নীচের মন্তব্যগুলি থেকে উন্নত):
pip freeze | grep -v "^-e" | xargs pip uninstall -y
postactivate
যা থাকবে।
setuptools
প্যাকেজটি সরিয়েছে । আমি এখানে নির্দেশাবলীর নীচে নিম্নলিখিত সমস্যার সমাধান করেছি: স্ট্যাকওভারফ্লো.com
pip freeze --exclude-editable | xargs pip uninstall -y
কোনও গ্রেপ প্যাটার্ন ব্যবহার না করে ভিসিএস প্যাকেজগুলি উপেক্ষা করতেও ব্যবহার করতে পারেন
এটি সমস্ত ম্যাক, উইন্ডোজ এবং লিনাক্স সিস্টেমের জন্য কাজ করবে। প্রয়োজনীয়তা.টিএসটি ফাইলের সমস্ত পাইপ প্যাকেজগুলির তালিকা পেতে (দ্রষ্টব্য: এটি প্রয়োজনীয়গুলি ওভাররাইট করে দেবে নীচের সমস্ত কমান্ডের মধ্যে প্রয়োজনীয়তা। টেক্সট) রয়েছে।
pip freeze > requirements.txt
এখন একে একে অপসারণ করতে
pip uninstall -r requirements.txt
আমরা যদি তখনই সমস্ত অপসারণ করতে চাই
pip uninstall -r requirements.txt -y
আপনি যদি এমন একটি বিদ্যমান প্রকল্পে কাজ করছেন যা একটি requirements.txt
ফাইল রয়েছে এবং আপনার পরিবেশটি ডাইভার্ট হয়েছে তবে কেবল requirements.txt
উপরের উদাহরণগুলি থেকে এটিকে প্রতিস্থাপন করুন toberemoved.txt
। তারপরে, একবার আপনি উপরের পদক্ষেপগুলি অতিক্রম করার পরে, আপনি requirements.txt
আপনার এখন পরিষ্কার পরিবেশ আপডেট করতে ব্যবহার করতে পারেন ।
এবং কোনও ফাইল তৈরি না করে একক কমান্ডের জন্য (যেমন @ জোয়েব প্রস্তাবিত)।
pip uninstall -y -r <(pip freeze)
pip uninstall -r requirements.txt -y
pip uninstall -y -r <(pip freeze)
একসাথে সব কিছু করতে ব্যবহার করতে পারেন।
এটি সর্বশেষতমের সাথে কাজ করে। আমি মনে করি এটি করার সবচেয়ে সংক্ষিপ্ত এবং সর্বাধিক ঘোষিত উপায়।
virtualenv --clear MYENV
তবে সাধারণত আমি কেবল অপরিবর্তনীয়তা নিয়ম থেকে ভ্যুচুয়ালেনভ মুছতে এবং পুনরায় তৈরি করি!
wipeenv
? virtualenvwrapper.readthedocs.org/en/latest/…
wipeenv
পরিবেশের মধ্যে একটি ত্রুটি ছুঁড়েছে এবং কোনও pip install -e
উন্নয়ন বিল্ডের প্রসঙ্গে ব্যবহার করা থাকলে কিছুই virtualenv --clear MYENV
সরিয়ে ফেলবে না, ব্যবহারের চেষ্টা করা ত্রুটি ছুঁড়ে না এবং কোনওটিকেই সরিয়ে দেয় না প্যাকেজগুলি যা আপনি পরিবেশে পূর্বে ইনস্টল করেছেন। কমপক্ষে এটি ওএসএক্সের ক্ষেত্রে। আরও তথ্যের জন্য bitbucket.org/dhellmann/virtualenvwrapper/issues/211/… দেখুন ।
wipeenv
ভার্চুয়ালেনভ্র্যাপার দ্বারা সরবরাহ করা একটি উপনাম, সুতরাং প্রত্যেকেরই এটি নেই।
আমি একটি মন্তব্য বিভাগের বাইরে এই উত্তরটি উন্নত করতে চেয়েছিলাম কারণ এটি থ্রেডের মধ্যে সবচেয়ে মার্জিত সমাধানগুলির মধ্যে একটি। এই উত্তরটির সম্পূর্ণ কৃতিত্ব @ জোয়েবে যায় ।
pip uninstall -y -r <(pip freeze)
উপরের উত্তরগুলি যেহেতু হ্যান্ডল করে না এমন একটি ভার্চুয়ালেনভের প্রসঙ্গে আমার ব্যবহারকারী প্যাকেজ ফোল্ডারটি সাফ করার ক্ষেত্রে এটি আমার পক্ষে দুর্দান্ত কাজ করেছে।
সম্পাদনা: এই কমান্ডটি কোনও মেকফাইলে কীভাবে কাজ করতে হয় কেউ জানেন?
আমি সুবিধার জন্য এটি আমার ব্যাশ প্রোফাইলে যুক্ত করেছি:
alias pipuninstallall="pip uninstall -y -r <(pip freeze)"
তারপরে চালান:
pipuninstallall
আপনি যদি পাইপেনভ ব্যবহার করে থাকেন তবে আপনি চালাতে পারেন:
pipenv uninstall --all
pip freeze
কোনও প্যাকেজ ইনস্টল না হলে আউটপুট কিছুই আসে না এবং pip uninstall
দুর্ভাগ্যক্রমে অভিযোগ করে)।
<(...)
গঠনটি একটি বাশিজম। সুতরাং আপনি হয় বাশ-সি "..." ব্যবহার করতে পারেন, বা এটি করে চারপাশে কাজ করতে পারেনpip freeze | pip uninstall -r /dev/stdin
ERROR: Cannot uninstall 'bitarray'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
অন্যান্য উত্তরগুলি অবশ্যই ব্যবহার করে pip list
বা pip freeze
অন্তর্ভুক্ত করে--local
থাকে তা সাধারণ নামের জায়গাগুলিতে পাওয়া প্যাকেজগুলি আনইনস্টল করে।
সুতরাং আমি স্নিপেটটি নিয়মিত ব্যবহার করি
pip freeze --local | xargs pip uninstall -y
সূত্র: pip freeze --help
ERROR: Cannot uninstall 'bitarray'. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.
। তারপরে আমি আর কোনও মডিউল আনইনস্টল করতে পারলাম না।
pip freeze
)pip freeze | xargs pip uninstall -y
pip list
)pip list | awk '{print $1}' | xargs pip uninstall -y
virtualenv
)virtualenv --clear MYENV
pip list
) দুর্দান্ত কাজ করে যতক্ষণ না আপনি দুর্ঘটনাক্রমে পিপটি আনইনস্টল করে না -_-
দ্রুততম উপায় হ'ল ভার্চুয়ালেনভকে পুরোপুরি রিমেক করা। আমি ধরে নিচ্ছি আপনার কাছে একটি প্রযোজনীয় টেক্সট ফাইল রয়েছে যা উত্পাদনের সাথে মেলে, যদি না:
# On production:
pip freeze > reqs.txt
# On your machine:
rm $VIRTUALENV_DIRECTORY
mkdir $VIRTUALENV_DIRECTORY
pip install -r reqs.txt
আমি নিম্নলিখিতটি সম্পাদন করে এটি পরিচালনা করেছি:
বর্তমানে ইনস্টল করা প্যাকেজ তালিকা সহ reqs.txt নামে প্রয়োজনীয় ফাইলগুলি তৈরি করুন
pip freeze > reqs.txt
তারপরে reqs.txt থেকে সমস্ত প্যাকেজ আনইনস্টল করুন
pip uninstall \
-y # remove the package with prompting for confirmation
-r reqs.txt
আমি এই পদ্ধতিটি পছন্দ করি কারণ আপনার যদি কোনও ভুল হয় তবে আপনার কাছে সর্বদা পিপের প্রয়োজনীয়তা ফাইলটি আবার পড়ে যায়। এটিও পুনরাবৃত্তিযোগ্য।
উইন্ডোজ যদি আপনার path
সঠিকভাবে কনফিগার করা থাকে তবে আপনি এটি ব্যবহার করতে পারেন:
pip freeze > unins && pip uninstall -y -r unins && del unins
এটি ইউনিক্সের মতো সিস্টেমগুলির জন্য একই রকমের ঘটনা হওয়া উচিত:
pip freeze > unins && pip uninstall -y -r unins && rm unins
কেবলমাত্র একটি সতর্কতা যে এটি পুরোপুরি শক্ত নয় কারণ আপনি 'ফাইলটি পাওয়া যায় নি' এর মতো সমস্যাগুলিতে চলে যেতে পারেন তবে এটি কিছু ক্ষেত্রে কার্যকর হতে পারে
সম্পাদনা: স্পষ্টতার জন্য: unins
একটি স্বেচ্ছাসেবী ফাইল যা এই কমান্ডটি কার্যকর করলে এটিতে ডেটা লিখিত থাকে:pip freeze > unins
পরিবর্তে লিখিত ফাইলটি তখন উল্লিখিত প্যাকেজগুলি আন-ইনস্টল করার জন্য ব্যবহারিত সম্মতি / পূর্ব অনুমোদনের মাধ্যমে ব্যবহার করা হয় pip uninstall -y -r unins
শেষ পর্যন্ত ফাইলটি মুছে ফেলা হয়।
wipeenv
এটি আমার একটি পুরানো প্রশ্ন তবে আমি ভবিষ্যতে রেফারেন্সের জন্য এটি পেরিয়ে গিয়েছিলাম কারণ আপনি এখন এটি করতে পারেন:
pip uninstall [options] <package> ...
pip uninstall [options] -r <requirements file> ...
-r, - প্রয়োজনীয় ফাইল
প্রদত্ত প্রয়োজনীয় ফাইলগুলিতে তালিকাভুক্ত সমস্ত প্যাকেজ আনইনস্টল করুন। এই বিকল্পটি একাধিকবার ব্যবহার করা যেতে পারে।
থেকে পিপ ডকুমেন্টেশন সংস্করণ 8.1
(এটি উত্তর হিসাবে যুক্ত করুন, কারণ @ ব্লুবেরিফিল্ডস এর উত্তরে মন্তব্য করার মতো যথেষ্ট খ্যাতি আমার নেই)
@ ব্লুবেরিফিল্ডস এর উত্তরগুলি ভাল কাজ করে, তবে আনইনস্টল করার জন্য কোনও প্যাকেজ না থাকলে ব্যর্থ হয় (এটি "যদি সমস্ত" আনইনস্টল করা হয় "কোনও স্ক্রিপ্ট বা মেকফিলের অংশ হয় তবে সমস্যা হতে পারে)। xargs -r
জিএনইউ'র সংস্করণ ব্যবহার করার সাথে এটির সমাধান করা যেতে পারে xargs
:
pip freeze --exclude-editable | xargs -r pip uninstall -y
থেকে man xargs
:
-r, - কোন রান-যদি-খালি
যদি স্ট্যান্ডার্ড ইনপুটটিতে কোনও ননব্ল্যাঙ্ক থাকে না, কমান্ডটি চালাবেন না। সাধারণত ইনপুট না থাকলেও কমান্ডটি একবার চালানো হয়। এই বিকল্পটি একটি জিএনইউ এক্সটেনশন।
সমস্ত অজগর প্যাকেজ আনইনস্টল করার জন্য এটি আমার পক্ষে সহজতম উপায় ছিল।
from pip import get_installed_distributions
from os import system
for i in get_installed_distributions():
system("pip3 uninstall {} -y -q".format(i.key))
ক্রস প্ল্যাটফর্ম সমর্থন কেবল ব্যবহার করে pip
:
#!/usr/bin/env python
from sys import stderr
from pip.commands.uninstall import UninstallCommand
from pip import get_installed_distributions
pip_uninstall = UninstallCommand()
options, args = pip_uninstall.parse_args([
package.project_name
for package in
get_installed_distributions()
if not package.location.endswith('dist-packages')
])
options.yes = True # Don't confirm before uninstall
# set `options.require_venv` to True for virtualenv restriction
try:
print pip_uninstall.run(options, args)
except OSError as e:
if e.errno != 13:
raise e
print >> stderr, "You lack permissions to uninstall this package.
Perhaps run with sudo? Exiting."
exit(13)
# Plenty of other exceptions can be thrown, e.g.: `InstallationError`
# handle them if you want to.
সহজ শক্তিশালী উপায়ে ক্রস প্ল্যাটফর্ম এবং পাইপেনভের কাজও হ'ল:
pip freeze
pip uninstall -r requirement
পাইপেনভ দ্বারা:
pipenv run pip freeze
pipenv run pip uninstall -r requirement
তবে পাইপলক বা পাইপফাইলে আপডেট করবেন না তাই সচেতন হন
আপনি যদি চালাচ্ছেন virtualenv
:
virtualenv --clear </path/to/your/virtualenv>
উদাহরণস্বরূপ, যদি আপনার ভার্চুয়ালেনভ হয় /Users/you/.virtualenvs/projectx
তবে আপনি চালাতে চান:
virtualenv --clear /Users/you/.virtualenvs/projectx
যদি আপনি জানেন না যে আপনার ভার্চুয়াল এনভিটি কোথায় অবস্থিত, আপনি which python
পাথটি পেতে একটি সক্রিয় ভার্চুয়াল এনভির ভিতরে চলে যেতে পারেন
আমার ক্ষেত্রে, আমি দুর্ঘটনাক্রমে pip
ম্যাকোস -এ হোমব্রব-ইনস্টলড ব্যবহার করে বিশ্বব্যাপী প্রচুর প্যাকেজ ইনস্টল করেছিলাম । ডিফল্ট প্যাকেজগুলিতে ফিরে যাওয়ার সহজতম উপায় ছিল:
$ brew reinstall python
বা, আপনি যদি ব্যবহার করছিলেন pip3
:
$ brew reinstall python3
ইন কমান্ড শেল উইন্ডোজের কমান্ড
pip freeze | xargs pip uninstall -y
কাজ করবে না। সুতরাং আপনারা যারা উইন্ডোজ ব্যবহার করছেন তাদের পক্ষে আমি এটি করার একটি বিকল্প উপায় বের করেছি।
pip freeze
একটি কমান্ড .txt ফাইল।pip uninstall -r *textfile.txt*
আপনি যদি ব্যবহার করে থাকেন তবে আপনি wipeenv কমান্ডটি pew
ব্যবহার করতে পারেন :
pew wipeenv [env]
আমি ব্যবহারকারীর সাইটে ইনস্টল করা সমস্ত প্যাকেজ আনইনস্টল করতে --user বিকল্পটি ব্যবহার করি।
পাইপ 3 ফ্রিজ - ব্যবহারকারী | xargs পাইপ আনইনস্টল করুন -y
কী দ্বারা প্যাকেজগুলি ইনস্টল করা হয়েছিল এবং আপনার সিস্টেমের প্যাকেজ ম্যানেজার দ্বারা কোন প্যাকেজ ইনস্টল করা হয়েছিল তা জানার কোনও উপায় নেই ip এর জন্য আপনার এই জাতীয় কিছু করা দরকার
আরপিএম-ভিত্তিক ডিস্ট্রোসের জন্য (পাইপটি আপনার পাইথন সংস্করণ দিয়ে পাইপ ইনস্টল করুন যার সাথে আপনি পাইপ ইনস্টল করেছেন):
find /usr/lib/python2.7/ |while read f; do
if ! rpm -qf "$f" &> /dev/null; then
echo "$f"
fi
done |xargs rm -fr
দেব-ভিত্তিক বিতরণের জন্য:
find /usr/lib/python2.7/ |while read f; do
if ! dpkg-query -S "$f" &> /dev/null; then
echo "$f"
fi
done |xargs rm -fr
তারপরে অবশিষ্ট ফাঁকা ডিরেক্টরিগুলি পরিষ্কার করতে:
find /usr/lib/python2.7 -type d -empty |xargs rm -fr
আমি শীর্ষের উত্তরটি খুব বিভ্রান্তিকর পেয়েছি কারণ এটি আপনার বিতরণ থেকে সমস্ত (সর্বাধিক?) পাইথন প্যাকেজ সরিয়ে ফেলবে এবং সম্ভবত আপনাকে একটি ভাঙ্গা সিস্টেমের সাহায্যে ছেড়ে দেবে।
dpkg-query -S '/usr/lib/python2.7/*'
, নামগুলি এবং dpkg-query -L
প্রতিটি নাম যুক্ত ফাইলগুলি ডাম্প করার জন্য? এটি ইতিমধ্যে প্রস্তুত প্রকাশিত হয়েছে। আমার মূল আপত্তিটি হ'ল প্যাকেজটি অন্য কোথাও ইনস্টল করা প্যাকেজগুলি লক্ষ্য করে পরিবর্তে পাইপ দ্বারা, আপনি যে ম্যানেজারটি প্রত্যাশা করেন তা ব্যতীত অন্য যে কোনও দ্বারা ইনস্টল করা প্যাকেজগুলি লক্ষ্যবস্তু করেছে এবং এমন কোনও স্থানে সাধারণত পাইপ স্পর্শ করা উচিত নয়। pip list -l
এটি স্থানীয়ভাবে ইনস্টল করা প্যাকেজগুলি তালিকাভুক্ত করে এবং কিছু এমনকি এটিও করবে pip install --target=...
। সমস্ত খালি ডায়ারগুলি অপসারণ করা আপনাকেও কামড় দেবে!