আমি বিভিন্ন ভার্চুয়ালেনভ পরিবেশে একই প্যাকেজ প্রচুর ইনস্টল করি । এমন কোনও উপায় আছে যে আমি একবার কোনও প্যাকেজ ডাউনলোড করতে পারি এবং তারপরে স্থানীয় ক্যাশে থেকে পাইপ ইনস্টল করতে পারি?
এটি ডাউনলোড ব্যান্ডউইথ এবং সময়কে হ্রাস করবে।
আমি বিভিন্ন ভার্চুয়ালেনভ পরিবেশে একই প্যাকেজ প্রচুর ইনস্টল করি । এমন কোনও উপায় আছে যে আমি একবার কোনও প্যাকেজ ডাউনলোড করতে পারি এবং তারপরে স্থানীয় ক্যাশে থেকে পাইপ ইনস্টল করতে পারি?
এটি ডাউনলোড ব্যান্ডউইথ এবং সময়কে হ্রাস করবে।
উত্তর:
মতে পিপ ডকুমেন্টেশন :
ভি .0.০ দিয়ে শুরু করে পাইপ ডিফল্ট ক্যাশে অন সরবরাহ করে যা ওয়েব ব্রাউজারের মতোই কাজ করে। যখন ক্যাশেটি ডিফল্টরূপে চালু থাকে এবং এটি ডিফল্টরূপে সঠিক কাজটি করার জন্য ডিজাইন করা থাকে আপনি ক্যাশে অক্ষম করতে পারবেন এবং সর্বদা
--no-cache-dir
বিকল্পটি ব্যবহার করে পিপিআইতে অ্যাক্সেস করতে পারবেন ।
অতএব, আপডেট হওয়া উত্তরটি হ'ল যদি আপনি ডাউনলোডের ক্যাশে চান তবে তার ডিফল্টগুলির সাথে পাইপটি ব্যবহার করুন।
থেকে পিপ খবর , সংস্করণ 0.1.4:
পরিবেশগত পরিবর্তনশীল $ PIP_DOWNLOAD_CACHE এর জন্য যোগ করা সমর্থন যা প্যাকেজ ডাউনলোডগুলি ক্যাশে করবে, তাই ভবিষ্যতে ইনস্টলেশনগুলিতে বড় ডাউনলোডের প্রয়োজন হবে না। নেটওয়ার্ক অ্যাক্সেস এখনও প্রয়োজন, তবে এটি ব্যবহার করার সময় কিছু ডাউনলোড এড়ানো হবে।
এর সুবিধা নিতে, আমি আমার সাথে নিম্নলিখিতগুলি যুক্ত করেছি ~/.bash_profile
:
export PIP_DOWNLOAD_CACHE=$HOME/.pip_download_cache
বা, আপনি যদি ম্যাকের সাথে থাকেন:
export PIP_DOWNLOAD_CACHE=$HOME/Library/Caches/pip-downloads
PIP_DOWNLOAD_CACHE
ডিরেক্টরিতে যুক্ত করা হবে । উদাহরণস্বরূপ, আমার কাছে এখন বেশ কয়েকটি জ্যাঙ্গো প্যাকেজ রয়েছে।virtualenvs
বিমানটিতে নতুন তৈরির জন্য এটি উত্তর নয় , তবে এটি এখনও দুর্দান্ত।আমার মতে, pip2pi
এই সমস্যার জন্য অনেক বেশি মার্জিত এবং নির্ভরযোগ্য সমাধান।
ডক্স থেকে:
পিপ 2 পিআইপি প্রয়োজনীয়তা থেকে পাইপিআই-সামঞ্জস্যপূর্ণ প্যাকেজ সংগ্রহস্থল তৈরি করে
pip2pi
দুটি সহজ কমান্ড ব্যবহার করে আপনাকে নিজের পাইপিআই সূচক তৈরি করতে দেয়:
একটি প্যাকেজ এবং এর সমস্ত প্রয়োজনীয়তা মিরর করতে, ব্যবহার করুন pip2tgz
:
$ cd /tmp/; mkdir package/
$ pip2tgz packages/ httpie==0.2
...
$ ls packages/
Pygments-1.5.tar.gz
httpie-0.2.0.tar.gz
requests-0.14.0.tar.gz
পূর্ববর্তী ডিরেক্টরি থেকে একটি প্যাকেজ সূচক তৈরি করতে:
$ ls packages/
bar-0.8.tar.gz
baz-0.3.tar.gz
foo-1.2.tar.gz
$ dir2pi packages/
$ find packages/
/httpie-0.2.0.tar.gz
/Pygments-1.5.tar.gz
/requests-0.14.0.tar.gz
/simple
/simple/httpie
/simple/httpie/httpie-0.2.0.tar.gz
/simple/Pygments
/simple/Pygments/Pygments-1.5.tar.gz
/simple/requests
/simple/requests/requests-0.14.0.tar.gz
আপনি দ্বিতীয় ধাপে তৈরি সূচকটি থেকে ইনস্টল করতে, আপনি কেবল ব্যবহার করতে পারেন:
pip install --index-url=file:///tmp/packages/simple/ httpie==0.2
এমনকি আপনার নিজের সূচকটি একটি দূরবর্তী হোস্টের সাথে মিরর করতে পারেন pip2pi
।
pip2tgz
আপনি যদি ইতিমধ্যে মনোনীত ডিরেক্টরিতে প্যাকেজটি ডাউনলোড করে থাকেন তবে সনাক্ত করে, সুতরাং যদি আপনি একই ইনস্টল লাইন বা একাধিক ইনস্টল লাইন পরিচালনা করেন যা ওভারল্যাপিং নির্ভরতা রাখে তবে এটি প্রতিটি প্যাকেজ একবারই ডাউনলোড করবে।
আরও নতুন পিপ সংস্করণগুলি এখন ডিফল্টরূপে ডাউনলোডগুলি ক্যাশে করে। এই ডকুমেন্টেশন দেখুন:
https://pip.pypa.io/en/stable/reference/pip_install/#caching
নামের একটি কনফিগারেশন ফাইল তৈরি ~/.pip/pip.conf
করুন এবং নিম্নলিখিত সামগ্রীগুলি যুক্ত করুন:
[global]
download_cache = ~/.cache/pip
ওএস এক্স-তে, বেছে নেওয়ার পক্ষে আরও ভাল পথ ~/Library/Caches/pip
হ'ল যেহেতু এটি অন্যান্য ওএস এক্স প্রোগ্রামগুলির কনভেনশন অনুসরণ করে।
pip.conf
একটি download_cache
সেটিংস আছে যা একই সিস্টেম-ওয়াইড ডিরেক্টরিতে নির্দেশ করে।
PIP_DOWNLOAD_CACHE এর কিছু গুরুতর সমস্যা রয়েছে। সবচেয়ে গুরুত্বপূর্ণ, এটি ডাউনলোডের হোস্টনামটিকে ক্যাশে এনকোড করে, তাই আয়না ব্যবহার করা অসম্ভব হয়ে যায়।
পিপ ডাউনলোডগুলির ক্যাশে পরিচালনা করার সর্বোত্তম উপায় হ'ল "প্যাকেজ ইনস্টল করুন" পদক্ষেপ থেকে "প্যাকেজ ডাউনলোড করুন" পদক্ষেপটি পৃথক করা। ডাউনলোড করা ফাইলগুলিকে সাধারণত "এসডিস্ট ফাইলগুলি" (উত্স বিতরণ) হিসাবে উল্লেখ করা হয় এবং আমি সেগুলি একটি ডিরেক্টরিতে রেখে চলেছি $ SDIST_CACHE।
দুটি পদক্ষেপই শেষ:
pip install --no-install --use-mirrors -I --download=$SDIST_CACHE <package name>
যা প্যাকেজটি ডাউনলোড করবে এবং এটিকে T_ SDIST_CACHE দ্বারা নির্দেশিত ডিরেক্টরিতে রাখবে। এটি প্যাকেজটি ইনস্টল করবে না। এবং তারপরে আপনি চালান:
pip install --find-links=file://$SDIST_CACHE --no-index --index-url=file:///dev/null <package name>
আপনার ভার্চুয়াল পরিবেশে প্যাকেজটি ইনস্টল করতে। আদর্শভাবে, source SDIST_CACHE আপনার উত্স নিয়ন্ত্রণে প্রতিশ্রুতিবদ্ধ হবে। উত্পাদনে স্থাপন করার সময়, প্যাকেজগুলি ডাউনলোড না করে ইনস্টল করার জন্য আপনি কেবল দ্বিতীয় পাইপ কমান্ডটি চালাবেন।
থেকে শুরু করে সংস্করণ 6.0 , pip
এখন এটি নিজের ক্যাশে এর না:
- অবমূল্যায়ন
pip install --download-cache
এবংpip wheel --download-cache
কমান্ড লাইন পতাকাগুলি হ্রাস করা হয়েছে এবং কার্যকারিতা সরানো হয়েছে। যেহেতু পাইপ এখন স্বয়ংক্রিয়ভাবে এটির অভ্যন্তরীণ এইচটিটিপি ক্যাশে কনফিগার করে এবং ব্যবহার করে যা--download-cache
বিদ্যমান বিকল্পগুলিকে অকার্যকর করে তোলা হয়েছে তবে পিপ ভি 8.0-এ অপসারণ না হওয়া পর্যন্ত তা গ্রহণযোগ্য হবে। আরও তথ্যের জন্য দয়া করে https://pip.pypa.io/en/latest/references/pip_install.html# ক্যাচিং দেখুন
উপরের লিঙ্ক থেকে আরও তথ্য :
ভি .0.০ দিয়ে শুরু করে পাইপ ডিফল্ট ক্যাশে অন সরবরাহ করে যা ওয়েব ব্রাউজারের মতোই কাজ করে। যখন ক্যাশেটি ডিফল্টরূপে চালু থাকে এবং এটি ডিফল্টরূপে সঠিক কাজটি করার জন্য ডিজাইন করা থাকে আপনি ক্যাশে অক্ষম করতে পারবেন এবং সর্বদা
--no-cache-dir
বিকল্পটি ব্যবহার করে পিপিআইতে অ্যাক্সেস করতে পারবেন ।
পাইপ হুইল একটি দুর্দান্ত বিকল্প যা প্যাকেজগুলি প্রাক-সংকলনের অতিরিক্ত বৈশিষ্ট্য সহ আপনি যা চান তা করে। থেকে সরকারী দস্তাবেজ :
প্রয়োজনীয়তার জন্য চাকা তৈরি করুন (এবং এর সমস্ত নির্ভরতা):
$ pip wheel --wheel-dir=/tmp/wheelhouse SomePackage
এখন আপনার /tmp/wheelhouse
ডিরেক্টরিতে আপনার সমস্ত নির্ভরতা পূর্বনির্ধারিত রয়েছে, তাই আপনি ফোল্ডারটিকে অন্য সার্ভারে অনুলিপি করতে এবং এই আদেশ দিয়ে সবকিছু ইনস্টল করতে পারেন:
$ pip install --no-index --find-links=/tmp/wheelhouse SomePackage
নোট করুন যে সমস্ত প্যাকেজগুলি মেশিনগুলিতে সম্পূর্ণ পোর্টেবল হবে না। কিছু প্যাকেজ বিশেষত পাইথন সংস্করণ, ওএস বিতরণ এবং / অথবা আপনি যে হার্ডওয়্যার আর্কিটেকচার ব্যবহার করছেন তার জন্য নির্মিত হবে। এটি ফাইলের নামে নির্দিষ্ট করা হবে, যেমন -cp27-none-linux_x86_64
CP৪-বিট লিনাক্সের সিপিথন ২.7 এর জন্য etc.
কেবল পাইপ ব্যবহার করে (আমার সংস্করণটি 1.2.1), আপনি এর মতো স্থানীয় সংগ্রহস্থলও তৈরি করতে পারেন:
if ! pip install --find-links="file://$PIP_SDIST_INDEX" --no-index <package>; then
pip install --download-directory="$PIP_SDIST_INDEX" <package>
pip install --find-links="file://$PIP_SDIST_INDEX" --no-index <package>
fi
পাইপের প্রথম কলটিতে প্রয়োজনীয় ফাইলগুলি থেকে প্যাকেজগুলি স্থানীয় সংগ্রহস্থলে (কেবল) অনুসন্ধান করা হবে এবং সেখান থেকে ইনস্টল করা হবে। যদি এটি ব্যর্থ হয়, পিপ তার স্বাভাবিক অবস্থান থেকে প্যাকেজগুলি পুনরুদ্ধার করে (যেমন পিপিআই) এবং এটি ডাউনলোড করে PIP_SDIST_INDEX
(তবে কোনও কিছু ইনস্টল করে না!)। স্থানীয় সূচক থেকে প্যাকেজটি সঠিকভাবে ইনস্টল করতে প্রথম কলটি "পুনরাবৃত্তি" হয়।
( --download-cache
একটি স্থানীয় ফাইল নাম যা সম্পূর্ণ হয়েছে (পলান) URL হল সৃষ্টি করেন এবং PIP এর সাথে একটি সূচক হিসাবে এই ব্যবহার করতে পারবেন না --find-links
। --download-cache
ক্যাশে ফাইল ব্যবহার করবে, যদি পাওয়া যায় নি। আমরা পিপ দ্বিতীয় কল করার জন্য এই বিকল্পটি যোগ করতে পারিনি, কিন্তু সূচক যেহেতু ইতিমধ্যে এক ধরণের ক্যাশে হিসাবে কাজ করে, এটি অগত্যা প্রচুর পরিমাণে আসে না instance উদাহরণস্বরূপ, আপনার সূচক খালি হলে এটি সাহায্য করবে)
এই পিপ-অ্যাক্সেল নামে একটি নতুন সমাধান রয়েছে , যা pip
অন্তর্নির্মিত ক্যাচিংয়ের জন্য একটি ড্রপ-ইন প্রতিস্থাপন ।
পাইপ-অ্যাক্সেল প্রোগ্রামটি পাইপের জন্য একটি আবরণ, পাইথন প্যাকেজ ম্যানেজার। এক বা একাধিক প্রয়োজনীয় ফাইল দেওয়া পাইথন ভার্চুয়াল পরিবেশকে আরম্ভ করার জন্য এটি পিপের ব্যবহারকে ত্বরান্বিত করে। এটি নিম্নলিখিত দুটি পদ্ধতির সমন্বয় করে এটি করে:
উত্স বিতরণ ডাউনলোডগুলি ক্যাশে করা হয় এবং উত্স বিতরণ আর্কাইভের স্থানীয় সূচক তৈরি করতে ব্যবহৃত হয়।
বাইনারি ডিস্ট্রিবিউশনগুলি বাইনারি উপাদানগুলি (যেমন এম 2 ক্রাইপ্টো এবং এলএক্সএমএল) এর সাথে নির্ভরতা ইনস্টল করার প্রক্রিয়াটি গতিতে ব্যবহার করা হয়। প্রতিটি ভার্চুয়াল পরিবেশের জন্য এই নির্ভরতাগুলি আবার সংশোধন করার পরিবর্তে আমরা সেগুলি একবার সংকলন করি এবং বাইনারি * .tar.gz বিতরণ হিসাবে ফলাফলটি ক্যাশে করি।
পেলোগিক তার খামারটিতে ক্রমাগত এবং ইন্টিগ্রেশন ক্রীতদাসদের ক্রমাগত ভার্চুয়াল পরিবেশের আরম্ভ করার জন্য পাইপ-অ্যাক্সেল ব্যবহার করে যা নিয়মিত ইউনিট পরীক্ষা চালাচ্ছে (এটি মূল ব্যবহারের ক্ষেত্রে একটি যার জন্য পিপ-অ্যাসিলটি বিকাশ করা হয়েছিল)। আমরা আমাদের বিল্ড সার্ভারগুলিতেও এটি ব্যবহার করি।
আমরা থেকে পরিবর্তন করতে 10x speedup প্রায় দেখা করেছি pip
থেকে pip-accel
।
একটি সহজ বিকল্প হয় basket
।
একটি প্যাকেজের নাম দেওয়া হয়েছে, এটি এটি ডাউনলোড করবে এবং একটি কেন্দ্রীয় অবস্থানের সমস্ত নির্ভরতা; পাইপ ক্যাশে কোনও ত্রুটি ছাড়াই। এটি অফলাইন ব্যবহারের জন্য দুর্দান্ত।
তারপরে আপনি এই ডিরেক্টরিটি উত্স হিসাবে ব্যবহার করতে পারেন pip
:
pip install --no-index -f file:///path/to/basket package
বা easy_install
:
easy_install -f ~/path/to/basket -H None package
আপনি যখনই অনলাইনে থাকবেন তখন ঘুড়িটি আপডেট করতে আপনি এটি ব্যবহার করতে পারেন।