কীভাবে প্রয়োজনে স্টেট করবেন। সরাসরি গিথুব উত্স xt


448

কমান্ডটি ব্যবহার করে আমি একটি লাইব্রেরি ইনস্টল করেছি

pip install git+git://github.com/mozilla/elasticutils.git

এটি সরাসরি গিথুব সংগ্রহশালা থেকে ইনস্টল করে। এটি সূক্ষ্মভাবে কাজ করে এবং আমি আমার মধ্যে সেই নির্ভরতা রাখতে চাই requirements.txt। আমি মত অন্যান্য টিকেট দিকে তাকিয়ে করেছি এই কিন্তু যে আমার সমস্যার সমাধান হল না। আমি যদি কিছু রাখি

-f git+git://github.com/mozilla/elasticutils.git
elasticutils==0.7.dev

মধ্যে requirements.txtফাইল, একটি pip install -r requirements.txtনিম্নলিখিত আউটপুটে ফলাফল:

Downloading/unpacking elasticutils==0.7.dev (from -r requirements.txt (line 20))
  Could not find a version that satisfies the requirement elasticutils==0.7.dev (from -r requirements.txt (line 20)) (from versions: )
No distributions matching the version for elasticutils==0.7.dev (from -r requirements.txt (line 20))

প্রয়োজনীয়তা ফাইলের নথিপত্র ব্যবহার সংযোগগুলি উল্লেখ না git+gitপ্রোটোকল নির্দিষ্টকারী তাই হয়তো এই মাত্র সমর্থিত নয়।

কারও কি আমার সমস্যার সমাধান আছে?

উত্তর:


327

"সম্পাদনাযোগ্য" প্যাকেজ সিনট্যাক্সrequirements.txt বিভিন্ন ভিসিএস (গিট, এইচজি, বিজেআর, এসএনএন) থেকে প্যাকেজ আমদানি করতে ব্যবহার করা যেতে পারে :

-e git://github.com/mozilla/elasticutils.git#egg=elasticutils

এছাড়াও, নির্দিষ্ট প্রতিশ্রুতিতে নির্দেশ করা সম্ভব:

-e git://github.com/mozilla/elasticutils.git@000b14389171a9f0d7d713466b32bc649b0bed8e#egg=elasticutils

3
আমি স্থানীয়ভাবে এডিটযোগ্য সংস্করণটি (সম্ভবত সিনট্যাক্স সমস্যার কারণে) চেকআউট করার ব্যবস্থা করিনি এবং তাই git+gitভেরিয়েন্টটি ব্যবহার করে (যা কাজ করেছিল) ended ইন requirements.txtআপনার সংস্করণ কাজ করে, তাই আপনাকে অনেক :) ধন্যবাদ
Alfe

1
docsলিংক আমার জন্য কাজ করছে না হয়; আমি একটি পুরানো ব্যবহার করেছি ।
ওস

42
আমি যা বুঝতে পারিনি তা হ'ল সিন্ট্যাক্সটি যা দেখায় ঠিক তেমন প্রয়োজনগুলিতে চলে আসে, অর্থাত্- -e এর আগে কোনও প্যাকেজের নাম নেই।
ageষি

5
আপনি প্যাকেজটি সম্পাদনযোগ্য মোডে রাখতে চান কিনা তার উপর নির্ভর করে "-e" যুক্ত করা প্রয়োজন নয়, @qff দ্বারা উত্তর দেখুন।
স্কাই

17
এর -e git+git://পরিবর্তে হওয়া উচিত নয় -e git://? আমার কাছে "স্থানীয় প্রকল্পের পথ হওয়া উচিত বা এসভিএন +, গিট +, এইচজি +, বা বিজেআর +" ত্রুটি বার্তা দিয়ে শুরু হওয়া কোনও ভিসিএস ইউআরএল হওয়া উচিত
ব্রুস ওয়েন

424

সাধারণত আপনার requirements.txtফাইলটি এরকম কিছু দেখায়:

package-one==1.9.4
package-two==3.7.1
package-three==1.0.1
...

গিথুব রেপো নির্দিষ্ট করার জন্য আপনার package-name==কনভেনশনটি দরকার নেই ।

আপডেট নীচের উদাহরণ package-twoগিটহাব রেপো ব্যবহার করে । এর মধ্যে @এবং পাঠ্যটি #প্যাকেজের নির্দিষ্টকরণগুলি বোঝায়।

কমিট হ্যাশ উল্লেখ করুন ( 41b95ecআপডেট হওয়া প্রসঙ্গে)requirements.txt ):

package-one==1.9.4
git+git://github.com/path/to/package-two@41b95ec#egg=package-two
package-three==1.0.1

শাখার নাম উল্লেখ করুন (master ):

git+git://github.com/path/to/package-two@master#egg=package-two

ট্যাগ নির্দিষ্ট করুন (0.1 ):

git+git://github.com/path/to/package-two@0.1#egg=package-two

রিলিজ নির্দিষ্ট করুন (3.7.1 ):

git+git://github.com/path/to/package-two@releases/tag/v3.7.1#egg=package-two

মনে রাখবেন যে #egg=package-two এখানে কোনও মন্তব্য নয়, এটি প্যাকেজের নামটি স্পষ্টভাবে জানানো

এই ব্লগ পোস্টে বিষয়টিতে আরও কিছু আলোচনা রয়েছে।


54
অন্য সমস্ত উত্তরগুলির মধ্যে, আমি বিশ্বাস করতে পারি না যে তাদের মধ্যে কেবলমাত্র "সাধারণ" রেকের মিশ্রণের সাথে তুলনা করার জন্য নিক্ষিপ্ত একটি গিট দিয়ে একটি প্রয়োজনীয় ফাইল দেখানো হয়নি । কমান্ড-লাইন ( -e) বিকল্পগুলির মতো দেখতে আমি এতটাই ছুঁড়েছি । উভয়ের মিশ্রণ দেখানোর জন্য ধন্যবাদ যাতে আমি এটি প্রসঙ্গে রাখতে পারি!
হেন্ডি

বিজ্ঞপ্তিতে উল্লেখ 3.7.1সঙ্গে git+git://github.com/path/to/package-two@releases/tag/v3.7.1#egg=package-twoআমার জন্য কাজ করে নি। আমার জন্য যা কাজ ছিল তা ছিল git+git://github.com/path/to/package-two@3.7.1#egg=package-two
জিন পল

এই উত্তরটি খুব সহায়ক ছিল। যদিও একটি জিনিস। এই git+git://...স্বরলিপিটি কোনওভাবে আমার লিনাক্স বাক্সে ssh- সম্পর্কিত ত্রুটি ঘটায়। সুতরাং আমি তাদের git+https://...স্বরলিপিটিতে স্যুইচ করে শেষ করেছি এবং তারপরে তারা নিখুঁতভাবে কাজ করে।
রায়লুও

174

requirements.txtপিপ 7.0: 1 হিসাবে গিট সংগ্রহস্থলের একটি প্যাকেজের উপর নির্ভরতা নির্দিষ্ট করার নিম্নলিখিত উপায়গুলিকে অনুমতি দেয়

[-e] git+git://git.myproject.org/SomeProject#egg=SomeProject
[-e] git+https://git.myproject.org/SomeProject#egg=SomeProject
[-e] git+ssh://git.myproject.org/SomeProject#egg=SomeProject
-e git+git@git.myproject.org:SomeProject#egg=SomeProject

গিথুব এর অর্থ এই যে আপনি করতে পারেন (বাদ দেওয়া লক্ষ্য করুন -e):

git+git://github.com/mozilla/elasticutils.git#egg=elasticutils

অতিরিক্ত উত্তর কেন?
আমি কিছুটা বিভ্রান্ত হয়ে পড়েছিলাম-e অন্যান্য উত্তরে পতাকা দেখে সুতরাং এখানে আমার স্পষ্টতা রয়েছে:

-eবা --editableপতাকা মানে যে প্যাকেজের মধ্যে ইনস্টল করা <venv path>/src/SomeProjectএবং এইভাবে মধ্যে গভীরভাবে মগ্ন না <venv path>/lib/pythonX.X/site-packages/SomeProjectএটি অন্যথায় মধ্যে স্থাপন করা হবে। 2

নথিপত্র


9
তবে মনে রাখবেন যে আপনি -eপরবর্তীটি বাদ দিলে pip freezeএই প্যাকেজটির জন্য সঠিক ফলাফল নাও পেতে পারে
ম্যাকচেছ

82

প্রথমত, সঙ্গে ইনস্টল git+gitবা git+https, কোন ভাবেই আপনি জানেন না। প্রকল্পের kronokশাখা ইনস্টল করার উদাহরণ brabeion:

pip install -e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion

দ্বিতীয়ত, pip freeze > requirements.txtআপনার মধ্যে সঠিক জিনিস পেতে ব্যবহার করুন requirements.txt। এই ক্ষেত্রে, আপনি পাবেন

-e git+https://github.com/kronok/brabeion.git@12efe6aa06b85ae5ff725d3033e38f624e0a616f#egg=brabeion-master

তৃতীয়, ফলাফল পরীক্ষা:

pip uninstall brabeion
pip install -r requirements.txt

4
পাইপ ফ্রিজ এখনও বন্ধ, পূর্ববর্তী সংস্করণ হিসাবে আমি যে প্যাকেজটি ব্যবহার করি তার তালিকা করে। এবং সরাসরি
গিথুব

4
ইউআরএল তৈরি করতে আপনাকে 'পিপ ফ্রিজ' এর জন্য `-e 'বিকল্পটি ব্যবহার করতে হবে
জানুজ্জ স্কনিইজনি

2
পিপ 9.0.1:no such option: -e
এসডিএস

মানে git+https? আপনি যে পাঠ্যটিতে বলেছেন git+gitএবং git+https
কোডটিতে বলেছেন

পছন্দ করেছেন
osa

17

পাইপ v1.5, যেহেতু (জানুয়ারী 1 2014 প্রকাশিত হয়েছে: চ্যানেললগ , জনসংযোগ ) আপনি নিজের মডিউলটি রাখতে গিট রেপোর একটি উপ-ডিরেক্টরিও নির্দিষ্ট করতে পারেন। সিনট্যাক্সটি দেখতে এমন দেখাচ্ছে:

pip install -e git+https://git.repo/some_repo.git#egg=my_subdir_pkg&subdirectory=my_subdir_pkg # install a python package from a repo subdirectory

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


1

আমি খুঁজে পেয়েছি যে পাইপ 3 পাওয়া (v9.0.1, যেমন উবুন্টু 18.04 এর প্যাকেজ ম্যানেজার দ্বারা ইনস্টল করা) আসলে ইনস্টল করতে আমি যে জিনিসটি বলি তা ইনস্টল করতে এটি এক ধরণের কৌতুকপূর্ণ এই সমস্যার মধ্যে যে কারওর সময় বাঁচাতে আমি এই উত্তরটি পোস্ট করছি।

এটি একটি প্রয়োজনীয়তার মধ্যে রাখা। টেক্সট ফাইল ব্যর্থ হয়েছে:

git+git://github.com/myname/myrepo.git@my-branch#egg=eggname

"ব্যর্থ" দ্বারা আমি বোঝাতে চাইছি যে এটি গিট থেকে কোডটি ডাউনলোড করার সময়, সেই শাখার রেপোতে কোডের পরিবর্তে পাইপিতে পাওয়া কোডটির মূল সংস্করণটি শেষ করে।

তবে শাখার নামের পরিবর্তে কমিট ইনস্টল করা কাজ করে:

git+git://github.com/myname/myrepo.git@d27d07c9e862feb939e56d0df19d5733ea7b4f4d#egg=eggname

আপনি কি নিশ্চিত যে আপনার শাখাটিও দূরবর্তী?
Alfe

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