কীভাবে অফলাইনে প্যাকেজ ইনস্টল করবেন?


159

পাইথন প্যাকেজ ডাউনলোড করার সর্বোত্তম উপায় কী এবং অন্য মেশিনে অফলাইন ইনস্টলেশন করার জন্য পাইপির নির্ভরতা? পাইপ বা ইজি_ ইনস্টল দিয়ে এটি করার কোনও সহজ উপায় আছে? আমি একটি ফ্রিবিএসডি বক্সে অনুরোধ পাঠাগারটি ইনস্টল করার চেষ্টা করছি যা ইন্টারনেটে সংযুক্ত নয়।


উত্তর:


77

যদি প্যাকেজটি পিওয়াইপিআইতে থাকে তবে এটি এবং এটির স্থানীয় নির্ভর কোনও ডিরেক্টরিতে নির্ভরতা ডাউনলোড করুন। যেমন

k এমকেডির / পাইপি এবং& সিডি / পিপিআই
s ls -la
  -rw-r - r-- 1 প্যাভেল স্টাফ 237954 এপ্রিল 19 11:31 ফ্লাস্ক- WTF-0.6.tar.gz
  -rw-r - r-- 1 প্যাভেল স্টাফ 389741 ফেব্রুয়ারী 22 17:10 জিনজা 2-2.6.tar.gz
  -rw-r - r-- 1 প্যাভেল স্টাফ 70305 এপ্রিল 11:58 মাইএসকিউএল-পাইথন -২.২.৩.আর্টরজ
  -rw-r - r-- 1 প্যাভেল স্টাফ 2597214 এপ্রিল 10 18:26 এসকিউএলএলকেমি -২.7..6.আর.ট্রা
  -rw-r - r-- 1 প্যাভেল স্টাফ 1108056 ফেব্রুয়ারী 22 17:10 ওয়ার্কজেগ-0.8.2.tar.gz
  -rw-r - r-- 1 প্যাভেল স্টাফ 488207 এপ্রিল 10 18:26 বোটো-2.3.0.tar.gz
  -rw-r - r-- 1 প্যাভেল স্টাফ 490192 এপ্রিল 16 12:00 ফ্লাস্ক-0.9-দেব -2a6c80a.tar.gz

কিছু প্যাকেজগুলি হাতে হাতে একই চেহারাযুক্ত টার্বলগুলিতে সংরক্ষণাগারভুক্ত হতে পারে। যখন আমি কোনও কিছুর আরও সাম্প্রতিক (কম স্থিতিশীল) সংস্করণ চাই তখন আমি এটি অনেক কিছু করি। কিছু প্যাকেজ PYPI- তে নেই, তাই তাদের ক্ষেত্রেও এটি একই প্রযোজ্য।

ধরুন আপনার কাছে পাইথন অ্যাপ্লিকেশনটি সঠিকভাবে তৈরি হয়েছে ~/src/myapp~/src/myapp/setup.pyথাকবে install_requiresতালিকা যা এক বা একাধিক জিনিষ আপনি আপনার আছে উল্লেখ /pypiডিরেক্টরি। তাই ভালো:

  install_requires=[
    'boto',
    'Flask',
    'Werkzeug',
    # and so on

আপনি যদি এখনও হ্যাক করার সময় আপনার অ্যাপ্লিকেশনটি সমস্ত প্রয়োজনীয় নির্ভরতা সহ চালাতে সক্ষম হতে চান তবে আপনি এই জাতীয় কিছু করবেন:

$ সিডি ~ / এসসিআর / মায়াপ
$ পাইথন সেটআপ.পি ডেভেলপ --always-unzip - না-হোস্ট = কিছুই নেই - ফাইন্ড-লিঙ্কগুলি = / পিপিআই

এইভাবে আপনার উত্স ডিরেক্টরি থেকে আপনার অ্যাপ্লিকেশনটি কার্যকর করা হবে। আপনি জিনিসগুলি হ্যাক করতে পারেন এবং তারপরে কোনও কিছুই পুনর্নির্মাণ না করে অ্যাপটি পুনরায় চালু করতে পারেন।

যদি আপনি বর্তমান অজগর পরিবেশে আপনার অ্যাপ্লিকেশন এবং এর নির্ভরতা ইনস্টল করতে চান তবে আপনি এই জাতীয় কিছু করবেন:

$ সিডি ~ / এসসিআর / মায়াপ
$ easy_install --always-unzip --ille-ਮੇਜ਼ਬਾਨ = কিছুই নেই - ফাইন্ড-লিঙ্কগুলি = / পিপিআই।

উভয় ক্ষেত্রেই, এক বা একাধিক নির্ভরতা /pypiডিরেক্টরিতে উপস্থিত না থাকলে বিল্ডটি ব্যর্থ হবে । এটি ইন্টারনেট থেকে অনুপস্থিত জিনিস ইনস্টল করার চেষ্টা করবে না।

আপনার বিশ্বব্যাপী পাইথন পরিবেশকে দূষিত করা এড়াতে আমি সক্রিয়ভাবে ভার্চুয়াল পরিবেশের জন্য setup.py develop ...এবং অনুরোধ easy_install ...করার পরামর্শ দিচ্ছি । এটি হ'ল (ভার্চুয়ালেনভ যা) বেশ কিছুটা পথ যেতে হবে। বৈশ্বিক পাইথন পরিবেশে কখনই কিছু ইনস্টল করবেন না।

আপনি যে অ্যাপ্লিকেশনটি তৈরি করেছেন সেই মেশিনটির যদি সেই মেশিনের মতোই আপনি কোনও স্থাপনা রাখতে চান তার মতো আর্কিটেকচার থাকে, আপনি কেবল সমস্ত ভার্চুয়াল পরিবেশ ডিরেক্টরিটি টর্বল করতে পারেন যেখানে আপনি easy_installসমস্ত কিছু তৈরি করেছেন। যদিও টার্বলিংয়ের ঠিক আগে, আপনাকে অবশ্যই ভার্চুয়াল পরিবেশ ডিরেক্টরিটি পুনঃস্থাপনযোগ্য করতে হবে (দেখুন --relocatable বিকল্প)। দ্রষ্টব্য: গন্তব্য মেশিনটির পাইথনের একই সংস্করণ ইনস্টল হওয়া দরকার এবং আপনার অ্যাপ্লিকেশনটিতে থাকা সি-ভিত্তিক নির্ভরতাগুলিও সেখানে অবশ্যই পুনরায় ইনস্টল করা উচিত (যেমন আপনি যদি পিআইএল এর উপর নির্ভর করেন তবে লিবপং, লিবজেপেইগ, ইত্যাদি অবশ্যই প্রিনইনস্টল করা উচিত) ।


3
পরিবর্তে --allow-hosts=Noneআপনি সুইচটি ব্যবহার করতে পারেন--no-index
রোমোর

আপনি কীভাবে সঠিকভাবে গঠিত পাইথন অ্যাপ্লিকেশন তৈরি করবেন তা দয়া করে বিস্তারিত বলতে পারেন?
PSr

3
@ প্রভোজোটরাই দয়া করে প্যাকেজিং.পিথন.আর.
পাভেল

299

পাইপ downloadকমান্ড আপনাকে প্যাকেজগুলি ইনস্টল না করে ডাউনলোড করতে দেয়:

pip download -r requirements.txt

(পাইপের পূর্ববর্তী সংস্করণগুলিতে, এটি বানানযুক্ত ছিল pip install --download -r requirements.txt))

তারপরে আপনি pip install --no-index --find-links /path/to/download/dir/ -r requirements.txtডাউনলোড করা এসডিস্টগুলি ইনস্টল করতে, নেটওয়ার্ক অ্যাক্সেস না করে ব্যবহার করতে পারেন ।


এটির সাথে সমস্যা হ'ল নির্ভরতাগুলির মধ্যে অন্যান্য নির্ভরতা থাকতে পারে এবং সেগুলি ডাউনলোড হবে না।
বিকি

সাপের ঝুড়ি (পিপের উপরে নির্মিত) নির্ভরতাগুলির নির্ভরতাও ডাউনলোড করবে।
ভিক্কি

14
@ ভিক্কি সত্য নয়, "পিপ ইনস্টল --ডাউনলোড" নির্ভরতাও ডাউনলোড করে, সুতরাং আপনার প্রয়োজনীয়তার অতিরিক্ত নির্ভরতা থাকলেও উপরের কমান্ডগুলি সঠিকভাবে কাজ করবে। সাপের ঝুড়ি অন্যান্য দরকারী জিনিসগুলি করতে পারে (এটি কখনও ব্যবহৃত হয়নি), তবে অবশ্যই এটির প্রয়োজন নেই।
কার্ল মেয়ার

6
@ ভিককি আমি কী বলছি তা আমি বুঝতে পেরেছি, তবে আমি আপনাকে বলছি যে এটি সত্য নয় :-) আপনি আবার একই বক্তব্য পোস্ট করার আগে আপনার চেষ্টা করা উচিত। আমি কেবল একটি প্রয়োজনীয়তাগুলিতে "পাইস্টেস্ট" রেখেছি। টেক্সট, "পিপ ইনস্টল --ডাউনলোড।
কার্ল মেয়ার

3
আমার মনে হয় এটা হওয়া উচিত: --find-links file:/path/to/some/dir/এবং আপনি ডাউনলোড করুন পিপ একই সংস্করণের সাথে ইনস্টল করা উচিত - অন্যথায় এটি ব্যর্থ হতে পারে
এ Binzxxxxxx

56

আপনি যদি অজগর পাছা এবং তাদের নির্ভরতা অফলাইনে ইনস্টল করতে চান তবে একই ওএস, নেটওয়ার্ক সংযুক্ত এবং পাইথন ইনস্টল থাকা কোনও মেশিনে এই পদক্ষেপগুলি অনুসরণ করুন:

1) requirements.txtঅনুরূপ সামগ্রী সহ একটি ফাইল তৈরি করুন (দ্রষ্টব্য - আপনি যে লাইব্রেরিগুলি ডাউনলোড করতে চান) এটি:

Flask==0.12
requests>=2.7.0
scikit-learn==0.19.1
numpy==1.14.3
pandas==0.22.0

প্রয়োজনীয় ফাইলগুলি তৈরি করার জন্য একটি বিকল্প ব্যবহার করা pip freeze > requirements.txt। এটি আপনার পরিবেশের সমস্ত লাইব্রেরি তালিকাবদ্ধ করবে। তারপরে আপনি প্রবেশ করতে requirements.txtএবং অপ্রয়োজনীয়গুলি সরাতে পারেন।

2) mkdir wheelhouse && pip download -r requirements.txt -d wheelhouseডিরেক্টরিতে libs এবং তাদের নির্ভরতা ডাউনলোড করতে কমান্ড কার্যকর করুনwheelhouse

3) wheelhouseডিরেক্টরিতে অনুলিপি প্রয়োজন। টেক্সট

4) সংরক্ষণাগার হুইলহাউস wheelhouse.tar.gzসঙ্গেtar -zcf wheelhouse.tar.gz wheelhouse

তারপরে wheelhouse.tar.gzআপনার টার্গেট মেশিনে আপলোড করুন :

1) tar -zxf wheelhouse.tar.gzফাইলগুলি এক্সট্রাক্ট করতে এক্সিকিউট করুন

2) pip install -r wheelhouse/requirements.txt --no-index --find-links wheelhouselibs এবং তাদের নির্ভরতা ইনস্টল করতে কার্যকর করুন


6
এটি একটি শিক্ষানবিস জন্য সঠিক পদক্ষেপ সহ পরিষ্কার উত্তর। ধন্যবাদ
কুমারহর্ষ

এটি এখন পর্যন্ত দেখা সবচেয়ে অজগর উপায়। ধন্যবাদ!
পেলুজা

2
তবে আপনার নির্দেশ অনুসরণ করে, আমি pip installশেষ অবধি, এটি বলে: ত্রুটি: প্রয়োজনীয়তা পূরণ করে এমন কোনও সংস্করণ খুঁজে পেল না `
ডেনিসলি

@ ডেনিসলি আপনার অজগর এবং পাইপের সংস্করণটি কী?
চৌকুনিয়াং

আমি এটি বুঝতে পেরেছি, এর কারণ হ'ল পাইপ আমার প্রয়োজনীয়তাগুলিতে প্যান্ডাস প্যাকেজের নির্দিষ্ট সংস্করণটি খুঁজে পাচ্ছে না t টেক্সট, যেমন আমি পান্ডস 0.2 ইনস্টল করতে পাইপ 3 ব্যবহার করেছি
ডেনিসলি

13

অফলাইন অজগর। এটি করার জন্য আমি virtualenv (বিচ্ছিন্ন পাইথন পরিবেশ) ব্যবহার করি

1) পাইপ দিয়ে অনলাইনে ভার্চুয়ালেনভ ইনস্টল করুন:

pip install virtualenv --user

বা অফলাইনে WHL সহ: এই লিঙ্কে যান , শেষ সংস্করণটি (। WHL বা tar.gz) ডাউনলোড করুন এবং এই আদেশ দিয়ে ইনস্টল করুন:

pip install virtualenv-15.1.0-py2.py3-none-any.whl --user

ব্যবহার করে --userআপনাকে ব্যবহার করার দরকার নেই sudo pip…

2) ভার্চুয়ালেনভ ব্যবহার করুন

অনলাইন মেশিনে টার্মিনাল সহ একটি ডিরেক্টরি নির্বাচন করুন cdএবং এই কোডটি চালান:

python -m virtualenv myenv
cd myenv
source bin/activate
pip install Flask

সমস্ত প্যাকেজ ইনস্টল করার পরে, requirements.txtআপনার ভার্চুয়ালেনভ সক্রিয় থাকাকালীন আপনাকে একটি জেনারেট করতে হবে, লিখুন

pip freeze > requirements.txt

একটি নতুন টার্মিনাল খুলুন এবং অন্য env তৈরি করুন myenv2

python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
ls

এখন আপনি নিজের অফলাইন ফোল্ডারে যেতে পারেন যেখানে আপনার requirements.txtএবং tranferred_packagesফোল্ডারটি সেখানে রয়েছে। নিম্নলিখিত কোড সহ প্যাকেজগুলি ডাউনলোড করুন এবং সেগুলি tranferred_packagesফোল্ডারে রেখে দিন।

pip download -r requirements.txt

আপনার অফলাইন ফোল্ডারটি অফলাইন কম্পিউটারে নিয়ে যান এবং তারপরে

python -m virtualenv myenv2
cd myenv2
source bin/activate
cd -
cd offline
pip install --no-index --find-links="./tranferred_packages" -r requirements.txt

ফোল্ডারে অফলাইনে কী রয়েছে [প্রয়োজনীয়তা.txt, tranferred_packages {ফ্লাস্ক-০.০১.১.আর্টর্টজ, ...}]

আপনার প্যাকেজ তালিকা পরীক্ষা করুন

pip list

দ্রষ্টব্য: আমরা যেমন 2017 তে পাই পাইথন ৩ ব্যবহার করা ভাল you

virtualenv -p python3 envname

2
এখানে পদক্ষেপগুলি অনুপস্থিত বা "অস্পষ্ট" বলে মনে হচ্ছে, আমি একটি 'নিষ্ক্রিয়' এবং তারপরে 'পিপ ফ্রিজ' ... সিডি অফলাইন এবং। / ট্রান্সফারড_প্যাকেজগুলি কোথাও থেকে উপস্থিত হওয়ার প্রত্যাশা করব - স্পষ্টতই এটিকে পরিষ্কার করার দরকার আছে?
হান্নু

হতে পারে, তবে আপনার বিবেচনা করা উচিত 'আমি একটি সংক্ষিপ্ত পোস্ট চেয়েছিলাম', 'সেই প্রক্রিয়াটি জটিল ছিল এবং আমি প্রতিটি পদক্ষেপ লিখতে পারি না (এটি ইউটিউবেই সম্ভব))
সায়রা

এটি সেরা উত্তর imho। অনেক সাহায্য করেছে
ওয়েবফোমাররা

এটি ট্রানফ্রেড_প্যাকেজ ফোল্ডারটি কীভাবে সেটআপ করতে পারে সে সম্পর্কে কিছুই বললে এটি সেরা উত্তর হবে। গুরুতর পদক্ষেপ ছাড়াই, -1
জিম

8

টার্বল ডাউনলোড করুন , এটি আপনার ফ্রিবিএসডি মেশিনে স্থানান্তর করুন এবং এটিটি বের করুন, পরে চালানpython setup.py install এবং আপনার কাজ শেষ!

সম্পাদনা: কেবল এটি যোগ করতে, আপনি এখন পাইপের সাহায্যে টারবলগুলিও ইনস্টল করতে পারেন।


1
সব নির্ভরতা কি? এগুলি সমাধানের সর্বোত্তম উপায় কী? আমারও কি নির্ভরতা ম্যানুয়ালি ইনস্টল করার দরকার আছে?
ক্রিস ড্র্যান্টজ

হ্যাঁ, এটি আমি জানি দুর্ভাগ্যজনকভাবে।
dav1d

8

আমাকে ধাপে ধাপে প্রক্রিয়াটি যেতে দিন:

  1. ইন্টারনেটে সংযুক্ত কম্পিউটারে একটি ফোল্ডার তৈরি করুন।
   $ mkdir packages
   $ cd packages
  1. কমান্ড প্রম্পট বা শেল খুলুন এবং নিম্নলিখিত কমান্ডটি কার্যকর করুন:

    ধরুন আপনি যে প্যাকেজটি চান তা হ'ল tensorflow

    $ pip download tensorflow

  2. এখন, টার্গেট কম্পিউটারে, packagesফোল্ডারটি অনুলিপি করুন এবং নিম্নলিখিত কমান্ডটি প্রয়োগ করুন

  $ cd packages
  $ pip install 'tensorflow-xyz.whl' --no-index --find-links '.'

নোট করুন যে tensorflow-xyz.whlপ্রয়োজনীয় প্যাকেজের মূল নামটি অবশ্যই প্রতিস্থাপন করতে হবে।


6

wheelসংকলিত প্যাকেজ ব্যবহার ।

বান্ডিল আপ:

$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ pip wheel -r requirements.txt --wheel-dir=$tempdir
$ cwd=`pwd`
$ (cd "$tempdir"; tar -cjvf "$cwd/bundled.tar.bz2" *)

টার্বল অনুলিপি করুন এবং ইনস্টল করুন:

$ tempdir=$(mktemp -d /tmp/wheelhouse-XXXXX)
$ (cd $tempdir; tar -xvf /path/to/bundled.tar.bz2)
$ pip install --force-reinstall --ignore-installed --upgrade --no-index --no-deps $tempdir/*

নোট wheelবাইনারি প্যাকেজগুলি মেশিন জুড়ে নেই।

আরও রেফারেন্স এখানে: https://pip.pypa.io/en/stable/user_guide/#installation-bundles


1
পাইথন ৩.6 দিয়ে মেশিনে বান্ডিলিং এবং পাইথন ৩.৫ দিয়ে অন্যটিতে এক্সট্রাক্ট করার বিষয়ে আমার সমস্যা ছিল: " <প্যাকেজ> .এই প্ল্যাটফর্মের কোনও সমর্থিত চাকা নয় "। উত্স এবং গন্তব্য সংস্করণগুলি কিছু প্যাকেজগুলির সাথে মেলে প্রয়োজন হতে পারে।
জুসো ওহটনেন

5

আমারও একই সমস্যা ছিল। এবং আমি এটি একইভাবে ইনস্টল করতে হয়েছিল, আমরা পাইপি থেকে করি।

আমি নিম্নলিখিত জিনিসগুলি করেছি:

  1. মেশিনে ইন্টারনেট অ্যাক্সেস থাকা সমস্ত প্যাকেজ সঞ্চয় করার জন্য একটি ডিরেক্টরি তৈরি করুন।

    mkdir -p /path/to/packages/
  2. পথে সমস্ত প্যাকেজ ডাউনলোড করুন

    pip download -r requirements.txt -d /path/to/packages
    
    Eg:- ls /root/wheelhouse/  # **/root/wheelhouse** is my **/path/to/packages/**
    total 4524
    -rw-r--r--. 1 root root   16667 May 23  2017 incremental-17.5.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   34713 Sep  1 10:21 attrs-18.2.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root 3088398 Oct 15 14:41 Twisted-18.9.0.tar.bz2
    -rw-r--r--. 1 root root  133356 Jan 28 15:58 chardet-3.0.4-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  154154 Jan 28 15:58 certifi-2018.11.29-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   57987 Jan 28 15:58 requests-2.21.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   58594 Jan 28 15:58 idna-2.8-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  118086 Jan 28 15:59 urllib3-1.24.1-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   47229 Jan 28 15:59 tqdm-4.30.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root    7922 Jan 28 16:13 constantly-15.1.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root  164706 Jan 28 16:14 zope.interface-4.6.0-cp27-cp27mu-manylinux1_x86_64.whl
    -rw-r--r--. 1 root root  573841 Jan 28 16:14 setuptools-40.7.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   37638 Jan 28 16:15 Automat-0.7.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   37905 Jan 28 16:15 hyperlink-18.0.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   52311 Jan 28 16:15 PyHamcrest-1.9.0-py2.py3-none-any.whl
    -rw-r--r--. 1 root root   10586 Jan 28 16:15 six-1.12.0-py2.py3-none-any.whl
  3. প্যাকেজ ডিরেক্টরিটি টার্গেট করুন এবং এমন মেশিনে অনুলিপি করুন যাতে ইন্টারনেট অ্যাক্সেস নেই। তারপরে,

    cd /path/to/packages/
    tar -cvzf packages.tar.gz .  # not the . (dot) at the end

    কপি packages.tar.gz গন্তব্য যন্ত্র যা ইন্টারনেট অ্যাক্সেস নেই করুন।

  4. যে মেশিনে ইন্টারনেট অ্যাক্সেস নেই, সেখানে নিম্নলিখিতগুলি করুন (ধরে নিলেন আপনি বর্তমান মেশিনে / টার্গেটে প্যাকেজগুলি / পাথ / টু / প্যাকেজ / অনুলিপি করেছেন )

    cd /path/to/packages/
    tar -xvzf packages.tar.gz
    mkdir -p $HOME/.config/pip/
    
    vi $HOME/.config/pip/pip.conf

    এবং নীচের সামগ্রীটি ভিতরে আটকে দিন এবং এটি সংরক্ষণ করুন।

    [global]
    timeout = 10
    find-links = file:///path/to/package/
    no-cache-dir = true
    no-index = true
  5. অবশেষে, আমি আপনাকে virtualenvপ্যাকেজ ইনস্টল করার জন্য কিছু ফর্ম ব্যবহার করার পরামর্শ দিচ্ছি ।

    virtualenv -p python2 venv # use python3, if you are on python3
    source ./venv/bin/activate
    pip install <package>

ডিরেক্টরি / পথ / থেকে / প্যাকেজ / ডিরেক্টরিতে থাকা সমস্ত মডিউল আপনার ডাউনলোড করতে সক্ষম হওয়া উচিত ।

দ্রষ্টব্য: আমি কেবল এটিই করেছি, কারণ আমি মডিউলগুলি ইনস্টল করার পদ্ধতিতে বিকল্পগুলি যোগ করতে বা পরিবর্তন করতে পারি না। না হলে আমি করতাম

    pip install --no-index --find-links /path/to/download/dir/ -r requirements.txt

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.