আমি কীভাবে সেটআপলগুলি এমন প্যাকেজ ইনস্টল করতে পারি যা পাইপিআইতে নেই?


142

আমি সবেমাত্র সেটআপল এবং ভার্চুয়ালেনভের সাথে কাজ শুরু করেছি। আমার প্যাকেজটির জন্য সর্বশেষতম পাইথন-গিয়ারম্যান প্রয়োজন যা কেবল গিটহাব থেকে উপলভ্য। পাইপআইতে পাইথন-গিয়ারম্যান সংস্করণটি একটি পুরানো। গিথুব উত্সটি সেটআপটুলস-সামঞ্জস্যপূর্ণ, যেমন সেটআপ.পি ইত্যাদি রয়েছে Py পিআইপিআইতে সন্ধানের ও পুরানোটি ইনস্টল করার পরিবর্তে সেটআপটুলগুলি নতুন সংস্করণ ডাউনলোড ও ইনস্টল করার কোনও উপায় আছে কি?

এফওয়াইআই, নতুন অজগর-গ্যারম্যান হ'ল http://github.com/mtai/python-gearman


1
আপনি সেখান থেকে উত্সটি ডাউনলোড করার পরিবর্তে এবং python setup.py installউত্স ডিরেক্টরিতে ব্যবহার করার পরিবর্তে গিটের বাইরে সরাসরি পাইথন প্যাকেজ ইনস্টল করার চেষ্টা করছেন ?
— অ্যান্ড্রু

4
আমি চাই যে আমার প্যাকেজটি একাধিক মেশিনে এবং তার সমস্ত নির্ভরতা স্বয়ংক্রিয়ভাবে ইনস্টল করা হবে।
— andrei

2
আপনি সরাসরি গিথুব থেকে এটি ব্যবহার করতে easy_installবা pipইনস্টল করতে পারেন । তবে আরও একটি সমাধান রয়েছে, আপনি পিআইপিআইতে প্যাকেজ যুক্ত করার কথা বিবেচনা করেছেন?
— ওল্ফ

2
যেহেতু এটি কেবল মোতায়েনের জন্য, কেন ব্যবহার buildoutকরবেন না ? এটিতে বেশ কয়েকটি তৈরি গিট প্লাগইন রয়েছে।
— ওল্ফ

এখানে সমাধান: stackoverflow.com/a/17442663/1841871
— zazabe

উত্তর:


156

কীটি প্যাকেজটি ডাউনলোড করা যায় তা Easy_install বলতে। এই বিশেষ ক্ষেত্রে এটি url http://github.com/mtai/python-gearman/tarball/master এ পাওয়া যাবে । তবে, সেই লিঙ্কটি নিজেই কাজ করবে না, কারণ সহজ_ইনস্টলটি ইউআরএল কী পেতে চলেছে তা দেখে কেবল তা বলতে পারে না।

পরিবর্তে http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0bet এ এটিকে পরিবর্তন করে , Easy_install প্যাকেজের নাম এবং এর সংস্করণ সনাক্ত করতে সক্ষম হবে।

চূড়ান্ত পদক্ষেপটি হ'ল আপনার প্যাকেজের নির্ভরতা_ লিঙ্কগুলিতে URL যুক্ত করা, যেমন:

setup(
   ...
   dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta']
)

এখন, যখন আপনার প্যাকেজটি ইনস্টল হচ্ছে, ইজি_ইনস্টল আবিষ্কার করবে যে সেই ইউআরএল থেকে ডাউনলোডের জন্য একটি "গিয়ারম্যান ২.০.০ বিটা" উপলব্ধ রয়েছে এবং আপনি "গিয়ারম্যান> = ২.০.০ বিটা" নির্দিষ্ট করে থাকলে পিআইপিআই-তে এটি খুশিভাবে বেছে নেবেন _ আপনার নির্ভরতা মধ্যে ..

(সাধারণত, এই ধরণের কাজটি যেভাবে করা হয় তা হল পিআইপিআই পৃষ্ঠার লিঙ্কটি ডাউনলোডযোগ্য উত্সের সাথে অন্তর্ভুক্ত করা; এই ক্ষেত্রে, গিয়ারম্যান প্যাকেজটির লেখক যদি উপরের মতো একটি লিঙ্ক অন্তর্ভুক্ত করে থাকেন তবে আপনি ইতিমধ্যে সেট হয়ে গেছেন সাধারণত, লোকেরা 'মাইপ্রজেক্ট-দেব' দিয়ে বিকাশ সংস্করণ চিহ্নিত করে এবং তারপরে লোকেরা 'মাইপ্রজেক্ট> = কোথাও, == দেব' এর প্রয়োজনীয়তা ব্যবহার করে, যাতে যদি কোনও বা উচ্চতর প্যাকেজ না থাকে তবে সহজ_ইনস্টল চেষ্টা করবে চেক আউট বা ডাউনলোড ডাউনলোড করুন।)

--process-dependency-linksব্যবহার করার সময় আপনাকে উল্লেখ করতে হবে pip। নোট করুন যে নির্ভরতা লিঙ্ক প্রসেসিং অবমূল্যায়ন করা হয়েছে এবং ভবিষ্যতে প্রকাশে অপসারণ করা হবে।


1
আপনার পরামর্শ অনুসারে আমি তা করেছি, তবে আমি যখন "পাইথন সেটআপ.পিটি বিকাশ" চালাই, তখন এটি "foo.egg-info / dependency_links.txt এ depend depend__lks লিখন" বলে, কিন্তু প্যাকেজটি ডাউনলোড এবং ইনস্টল করে না। যদি সেটাকে সহায়তা করে তবে আমি একটি সেটআপলগুলি ভিত্তিক ভার্চুয়ালেনভ ব্যবহার করছি।
— andrei

15
আপনারও ইনস্টল_রেইকায়ারস = 'গিয়ারম্যান> = 2.0.0 বেটা' থাকা দরকার; আপনি কি এটি অন্তর্ভুক্ত করেছেন?
— পিজে এবি

3
এটি betaপিআইপিআই-তে বিদ্যমান সংস্করণটির প্রত্যয় সহ আমার পক্ষে কাজ করে না , এটি পিআইপিআই থেকে প্যাকেজটি সংজ্ঞায়িত সংস্করণের পরিবর্তে ইনস্টল করবে dependency_links। যদি আপনি পিপিআইতে যা আছে তার থেকে বেশি সংস্করণ সেট করার চেষ্টা করেন #egg=package-version, সেটআপ সরঞ্জামটি একটি Could not find a version that satisfies the requirementত্রুটি এবং পিপিআইতে উপলব্ধ সমস্ত সংস্করণের একটি তালিকা দিয়ে অভিযোগ করবে । নোট করুন যে আমি আমার প্যাকেজটি sdistএটির সাথে ইনস্টল করার চেষ্টা করছি pip install http://url/to/my/generated/tar।
— জাজাবে

1
ঠিক আছে, আমার প্যাকেজটি ইনস্টল করে easy_install http://url/to/my/generated/tar, সবকিছু প্রত্যাশার মতো কাজ করে ... কোনও ধারণা কেন?
— জাজাবে

3
--process-dependency-linkspip19 হিসাবে সরানো হয়েছে ! দেখুন: github.com/pypa/pip/issues/6162
— ফিনিক্স

67

আপনি pip install protocol+location[@tag][#egg=Dependency]পিপ ব্যবহার করে উত্স থেকে সরাসরি ইনস্টল করতে ফর্ম্যাটটি ব্যবহার করতে পারেন ।

git

pip install git+https://github.com/username/repo.git
pip install git+https://github.com/username/repo.git@MyTag
pip install git+https://github.com/username/repo.git@MyTag#egg=ProjectName

তত্পর

pip install hg+https://hg.myproject.org/MyProject/

SVN

pip install svn+svn://svn.myproject.org/svn/MyProject

Bzr

pip install bzr+http://bzr.myproject.org/MyProject/trunk

নিম্নলিখিত প্রোটোকলগুলি সমর্থিত: [+git, +svn, +hg, +bzr]

সংস্করণ

@tag আপনাকে চেক আউট করার জন্য একটি নির্দিষ্ট সংস্করণ / ট্যাগ নির্দিষ্ট করতে দেয়।

#egg=name অন্যদের নির্ভরতা হিসাবে প্রকল্পটি কী তা আপনাকে নির্দিষ্ট করতে দেয়।

ক্রমটি সর্বদা হওয়া উচিত @tag#egg=name।

ব্যক্তিগত সংগ্রহস্থল

প্রোটোকলটি এসএসএইচ ( ssh://) এ পরিবর্তন করে এবং উপযুক্ত ব্যবহারকারী ( git@) যুক্ত করে আপনি ব্যক্তিগত সংগ্রহস্থল থেকেও ইনস্টল করতে পারেন :

git+ssh://git@github.com/username/my_private_repo

আপনি ব্যবহারকারীর নাম / পাসওয়ার্ড সহ ব্যক্তিগত সংগ্রহস্থল থেকেও ইনস্টল করতে পারেন।

git+https://<username>:<password>@github.com/<user>/<repo>.git

গিথুব ব্যক্তিগত OAuth টোকেনগুলি তৈরি করার ক্ষমতা সরবরাহ করে যা চক্র করা যায়

git+https://<oauth token>:x-oauth-basic@github.com/<user>/<repo>.git

requirements.txt

requirements.txt প্রকল্প নির্ভরতা নির্দিষ্ট করতে ব্যবহৃত হয়:

requirements.txt

package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git

এগুলি প্যাকেজের সাথে স্বয়ংক্রিয়ভাবে ইনস্টল হয় না এবং অবশ্যই কমান্ডের সাথে ইনস্টল করা উচিত pip -r requirements.txt।

প্রয়োজনীয় ফাইলগুলি সহ

প্রয়োজনীয় ফাইলগুলি অন্যান্য প্রয়োজনীয় ফাইলগুলি অন্তর্ভুক্ত করতে পারে:

প্রয়োজনীয়তা-docs.txt

sphinx
-r requirements-dev.txt

প্রয়োজনীয়তা-dev.txt

some-dev-tool
-r requirements.txt

requirements.txt

package1
package2==1.0.2
package3>=0.0.4
git+https://github.com/username/repo.git

setup.py

প্রয়োজনীয় ফাইলগুলি setup.pyনিম্নলিখিত কমান্ডের সাথে নির্দিষ্ট করা নির্ভরতাগুলি ইনস্টল করতে পারে :

-e .

setup.pyউপরের মতো একই সিনট্যাক্স ব্যবহার করে সংগ্রহস্থল থেকেও ইনস্টল করতে পারে তবে এই উত্তরেdependency_links বর্ণিত মানটি ব্যবহার করে ।

তথ্যসূত্র:

https://pip.pypa.io/en/latest/user_guide.html#installing-packages https://pip.pypa.io/en/latest/references/pip_install.html


2
setup.py সংগ্রহস্থল থেকে ইনস্টল করতে পারেন। স্রেফ 'setup.py dependency_links' অনুসন্ধান করুন
— টমডটম

1
@ টমডটটম ডার্প, আমি এমনকি এই উত্তরটিকে অগ্রাহ্য করেছিলাম তবে কোনওভাবেই এটির সীমাবদ্ধতা তৈরি হয়নি = পি আমি আমার উত্তর আপডেট করব। যে ইশারা জন্য ধন্যবাদ! এটি আমি করছি এমন কিছু জিনিসগুলির সাথে সহায়তা করবে।
— রিবস

নির্ভরতা_লিঙ্কগুলি আমার মনে হয় যদিও (?) github.com/pypa/pip/issues/3939 এ অবমূল্যায়ন করা হচ্ছে । আমি এই উত্তরটি পছন্দ করি এবং মনে করি এটি সক্ষম হওয়ার কারণে এটি আরও ভাল (সেটআপ.পিতে):extras_require={'all': [repo @ git+https://github.com/username/repo.git]}
— জোশিয়াহ এল

21

যেহেতু আমাকে কেবল একই কাজটি করতে হয়েছিল, আমি এটি করার মতো আরও একটি উপায় খুঁজে পেয়েছি pip 'র --process-dependency-linksমধ্যে অপসারণ করা হবে নির্ধারিত করা হয় pipঅনুযায়ী 19.0 এই মন্তব্যটি ।

pip 18.1 নিম্নলিখিত বৈশিষ্ট্য অন্তর্ভুক্ত

নির্ভরতা হিসাবে পিইপি 508 ইউআরএল প্রয়োজনীয়তাগুলি ব্যবহার করার অনুমতি দিন।

থেকে পিইপি 508 এর বর্ণনা , এই জাতীয় URL নির্ভরতার জন্য সিনট্যাক্সটি দেখতে পাওয়া যায়:

একটি সর্বনিম্ন URL ভিত্তিক লুক:

পিপ @ https://github.com/pypa/pip/archive/1.3.1.zip#sha1=da9234ee9982d4bbb3c72346a6de940a148ea686

সুতরাং আপনার setup.py মত এটি দেখতে হবে

setup(
   ...
   install_requires = [
   ...
   'python-gearman @ https://github.com/mtai/python-gearman/archive/master.zip'
   ...
   ]
)

লক্ষ্য করুন, লিঙ্কটি একটি সংরক্ষণাগার ফাইল এবং এই উত্তরে বর্ণিত হিসাবে কোনও সংগ্রহস্থলের একটি নির্দিষ্ট প্রকাশ বা শাখা হতে পারে । এছাড়াও, অন্যান্য সংগ্রহস্থল হোস্টের সাথে কাজ করার জন্য সেই উত্তরটি দেখুন।

আমার জ্ঞানের সর্বোপরি, নির্ভরতা আপডেট করার সহজতম উপায় হ'ল pip install -I .ডিরেক্টরিটি থেকে আপনার প্যাকেজটি ইনস্টল করার সময় ব্যবহার করা ।


এটি কি pip installগিট ইউআরএল #subdirectory=...ইত্যাদির মতো সমর্থন করে এমন সমস্ত কিছুকে সমর্থন করে ? অথবা এগুলি কী আলাদা এবং বেমানান উপায়ে প্রকাশিত বিভিন্ন বৈশিষ্ট্য সহ একদম নতুন সিনট্যাক্স নিয়ে এসেছিল?
— রেরাম

আপনি যদি কমান্ড লাইনে সেটআপলগুলি ব্যবহার না করে এবং ম্যানুয়ালি নির্ভরতাগুলি পরিচালনা করেন তবে মনে হয় আপনাকে এখনও @ রিবসের উত্তর দ্বারা বর্ণিত পদ্ধতির ব্যবহার করতে হবে ।
— ফিল

1
কেবল distutils.core.setuppip 19.1.1
— এটির

ফলস্বরূপ requirements.txt, তবে, pip install -r requirments.txt
— 20

@ শোলডসি requirments.txtআপনি কোনটির কথা উল্লেখ করছেন?
— ফিল

6

ভ্যানিলা setuptoolsগিট সংগ্রহস্থল থেকে সরাসরি ডাউনলোড সমর্থন করে না তবে আপনি সেই পৃষ্ঠা থেকে ডাউনলোড উত্সের লিঙ্কগুলির একটি ব্যবহার করতে পারেন , যেমন:

easy_install http://github.com/mtai/python-gearman/tarball/master

সুতরাং, আমার প্যাকেজটি যেখানে চলছে এমন কোনও সার্ভারে পাইথন-গিয়ারম্যানের এই সংস্করণটি ইনস্টল করা হয়েছে কিনা তা নিশ্চিত করার জন্য, আমার প্যাকেজটি ইনস্টল করার আগে আমাকে ইজি_ইনস্টল নিজেই চালাতে হবে?
— andrei

আপনি যদি সহজ_ইনস্টল ব্যবহার করেন তবে হ্যাঁ। তবে, অন্যরা যেমন উল্লেখ করেছে, আপনি স্যুইচ করতে পারেন pipবা buildoutযার মধ্যে আরও অত্যাধুনিক প্রয়োজনীয়তা পরিচালনা রয়েছে। উদাহরণস্বরূপ দেখুন: পাইপ.পেনপ্লানস.আর
— নেড ডিলি

আসলে, আপনাকে ম্যানুয়ালি ইজি_ ইনস্টল চালাতে হবে না; আপনি কেবল নিজের সেটআপ.পিকে অতিরিক্ত লিঙ্ক যুক্ত করতে পারেন। আমি বিবরণ ব্যাখ্যা করে একটি উত্তর লিখব।
— পিজে এবি

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