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


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.