কোনও ব্যক্তিগত গিটহাব সংগ্রহশালা থেকে প্যাকেজ ইনস্টল করার জন্য কি পিপ ব্যবহার করা সম্ভব?


349

আমি একটি বেসরকারী গিটহাব সংগ্রহশালা থেকে পাইথন প্যাকেজ ইনস্টল করার চেষ্টা করছি। সর্বজনীন সংগ্রহস্থলের জন্য, আমি নিম্নলিখিত কমান্ডটি জারি করতে পারি যা ভাল কাজ করে:

pip install git+git://github.com/django/django.git

তবে, আমি যদি এটি ব্যক্তিগত সংগ্রহস্থলের জন্য চেষ্টা করি:

pip install git+git://github.com/echweb/echweb-utils.git

আমি নিম্নলিখিত আউটপুট পেতে:

Downloading/unpacking git+git://github.com/echweb/echweb-utils.git
Cloning Git repository git://github.com/echweb/echweb-utils.git to /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build
Complete output from command /usr/local/bin/git clone git://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build:
fatal: The remote end hung up unexpectedly

Cloning into /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build...

----------------------------------------
Command /usr/local/bin/git clone git://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-VRsIoo-build failed with error code 128

আমার ধারণা এটি এর কারণ কারণ আমি কোনও প্রমাণীকরণ সরবরাহ না করে একটি ব্যক্তিগত সংগ্রহস্থল অ্যাক্সেস করার চেষ্টা করছি। অতএব আমি গিট + ব্যবহারের চেষ্টা করে এই sshআশা করেছিলাম যে পাইপটি আমার এসএসএইচ পাবলিক কীটি প্রমাণীকরণের জন্য ব্যবহার করবে:

pip install git+ssh://github.com/echweb/echweb-utils.git

এটি নিম্নলিখিত আউটপুট দেয়:

Downloading/unpacking git+ssh://github.com/echweb/echweb-utils.git
Cloning Git repository ssh://github.com/echweb/echweb-utils.git to /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build
Complete output from command /usr/local/bin/git clone ssh://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build:
Cloning into /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build...

Permission denied (publickey).

fatal: The remote end hung up unexpectedly

----------------------------------------
Command /usr/local/bin/git clone ssh://github.com/echweb/echweb-utils.git /var/folders/cB/cB85g9P7HM4jcPn7nrvWRU+++TI/-Tmp-/pip-DQB8s4-build failed with error code 128

আমি যা অর্জন করার চেষ্টা করছি তা কি সম্ভব? যদি তা হয় তবে আমি কীভাবে এটি করতে পারি?


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

@nmicheals এটাই আমি এ পর্যন্ত করেছি, তবে অনেকগুলি ওয়েবসাইটের জন্য আলাদা আলাদা ভার্চুয়ালিভগুলি সহ মোতায়েনের জন্য এটি প্রয়োজনীয় ফাইলগুলিতে রেখে দেওয়া দরকার।
অ্যাডাম জে ফারস্টার

কেবলমাত্র তিনিই নিশ্চিত: আপনি ইতিমধ্যে গিথুবে এসএসএইচ সমর্থনটি সেট আপ করেছেন, তাই না? যদি তা অবশ্যই কাজ করে না .... আপনি কি ইউআরআই হিসাবে গিট + গিট: // ব্যবহারকারী: পাস@github.com / .... ব্যবহার করার চেষ্টা করেছেন?
জেসন লেব্রুন

eval $(ssh-agent); ssh-add ~/.ssh/github_id_rsaপিপ ইনস্টলগুলি ব্যবহার করে নীচের পিপ ইনস্টলগুলি চালানোর চেষ্টা করুন এবং তারপরে নীচের পিপ.পিপা.আই.ও.
ড্যারেন ওয়েবার

উত্তর:


375

আপনি git+sshইউআরআই স্কিম ব্যবহার করতে পারেন তবে আপনাকে অবশ্যই একটি ব্যবহারকারী নাম সেট করতে হবে :

pip install git+ssh://git@github.com/echweb/echweb-utils.git

আপনি কি git@ইউআরআইতে অংশটি দেখতে পাচ্ছেন ?

পিএস: ডিপ্লয় কীগুলি সম্পর্কেও পড়ুন ।

পিপিএস: আমার ইনস্টলেশনতে, "গিট + এসএসএস" ইউআরআই স্কিম কেবল "সম্পাদনযোগ্য" প্রয়োজনীয়তা সহ কাজ করে:

pip install -e URI#egg=EggName

মনে রাখবেন : কমান্ডে রিমোটের ঠিকানা ব্যবহার করার আগে :যে চরিত্রটি git remote -vমুদ্রণ করে তা পরিবর্তন করুন :/pip

$ git remote -v
origin  git@github.com:echweb/echweb-utils.git (fetch)
                      ^ change this to a '/' character

যদি আপনি ভুলে যান তবে আপনি এই ত্রুটিটি পাবেন:

ssh: Could not resolve hostname github.com:echweb:
         nodename nor servname provided, or not known

3
তার জন্য ধন্যবাদ, আমি কেবল গিট @ অংশটি মিস করছি। ঘটনাক্রমে 'পাইপ ইনস্টল গিট + এসএসএস: //git@github.com/echweb/echweb-utils.git' কমান্ডটি কাজ করেছে, আমাকে -e স্যুইচ লাগেনি।
অ্যাডাম জে ফরস্টার

2
আপনি সঠিক ব্যবহারকারীর নাম সেট করতে একটি .ssh / কনফিগার ফাইলও ব্যবহার করতে পারেন
স্টেফানো

2
এটি আমার জন্য কাজ করত তবে এখন তা নয়, আমি এমনকি git+ssh://git@github.com/echweb/echweb-utils.gitআমার প্রয়োজনীয় ফাইলগুলিতে সঠিক স্কিমটি ব্যবহার করছি । আমি এখানে একটি নতুন প্রশ্ন খুলেছি: স্ট্যাকওভারফ্লো / প্রশ্ন / 18883430/… । যেকোনো সাহায্যই অসাধারণ.
রবিজি

2
পারফেক্ট। ফেলে git+ssh://git@github.com/echweb/echweb-utils.gitমধ্যে requirements.txtকাজ খুব, যা হয় সন্ত্রস্ত।
অবিন্দ্র গলচরণ

2
আপনি যদি একটি নির্দিষ্ট শাখা থেকে ইনস্টল করতে চান:pip install git+ssh://git@github.com/echweb/echweb-utils.git@branch-name
গিলহর্মী বেলট্রামিনী

73

অতিরিক্ত কৌশল হিসাবে, আপনার যদি স্থানীয়ভাবে ব্যক্তিগত সংগ্রহস্থল ক্লোন করা থাকে তবে আপনি এটি করতে পারেন:

pip install git+file://c:/repo/directory

আরও আধুনিকভাবে, আপনি কেবল এটি করতে পারেন (এবং এর -eঅর্থ হ'ল সেগুলি প্রতিফলিত হওয়ার আগে আপনাকে কোনও পরিবর্তন করতে হবে না):

pip install -e C:\repo\directory

9
এটি বেশ সহায়ক ছিল। স্পষ্টতই, পিপের মাধ্যমে ইনস্টল করার আগে স্থানীয় পরিবর্তনগুলিকে গিট-কমিট করতে হবে।
ramhiser

5
এটি সত্য - এটি গিট সংগ্রহস্থল (.git) থেকে টানছে, ফাইলগুলির কার্যকরী অনুলিপিগুলি নয়।
স্কট

47

আপনি সরাসরি এইচটিটিপিএস ইউআরএল দিয়ে এটি করতে পারেন:

pip install git+https://github.com/username/repo.git

এটি উদাহরণস্বরূপ, একটি জ্যাঙ্গো প্রকল্পের প্রয়োজনীয়তাগুলিতে এই লাইনটি যুক্ত করার জন্যও কাজ করে ।


19
প্রাইভেট রেপোর জন্য, যদিও এটি কনসোলে একটি ব্যবহারকারীর নাম / পাসওয়ার্ড প্রম্পট ট্রিগার করবে, যা সম্ভবত আপনি চান না।
উপহাস

31

এটি বিটবাকেটের সাথেও কাজ করে :

pip install git+ssh://git@bitbucket.org/username/projectname.git

পিপ এই ক্ষেত্রে আপনার এসএসএইচ কী ব্যবহার করবে।


15

প্রয়োজনীয় ফাইলের সিনট্যাক্সটি এখানে দেওয়া হয়েছে:

https://pip.pypa.io/en/latest/reference/pip_install.html#requirements-file-format

সুতরাং উদাহরণস্বরূপ, ব্যবহার করুন:

-e git+http://github.com/rwillmer/django-behave#egg=django-behave

আপনি যদি ইনস্টলেশনটি পরে উত্সটি কাছাকাছি থাকতে চান।

বা শুধু

git+http://github.com/rwillmer/django-behave#egg=django-behave

আপনি যদি এটি ইনস্টল করা চান।


প্রয়োজনীয়তা ফাইল সিনট্যাক্সের জন্য URL পরিবর্তন হয়েছে। নতুন ইউআরএল হ'ল: পাইপ.পাইপা.আইও
গোলক

15

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

গিটহাব প্রাইভেট रिपোরিটরিগুলির জিপ / টার্বল পাওয়ার সহজ উপায় সরবরাহ করে না (বর্তমানে, আগস্ট 2016 হিসাবে)। সুতরাং আপনাকে সেটআপলগুলিকে নির্দেশ করতে হবে যাতে আপনি গিট সংগ্রহস্থলের দিকে নির্দেশ করছেন:

from setuptools import setup
import os
# Get the deploy key from https://help.github.com/articles/git-automation-with-oauth-tokens/
github_token = os.environ['GITHUB_TOKEN']

setup(
    # ...
    install_requires='package',
    dependency_links = [
    'git+https://{github_token}@github.com/user/{package}.git/@{version}#egg={package}-0'
        .format(github_token=github_token, package=package, version=master)
        ]

এখানে কয়েকটি নোট:

  • ব্যক্তিগত সংগ্রহস্থলের জন্য, আপনাকে গিটহাবের সাথে প্রমাণীকরণ করতে হবে; আমি খুঁজে পাওয়া সবচেয়ে সহজ উপায় হ'ল ওআউথ টোকেন তৈরি করা, এটি আপনার পরিবেশে ফেলে দিন এবং তারপরে এটি ইউআরএল সহ অন্তর্ভুক্ত করুন to
  • পিপিআইতে কোনও প্যাকেজ না থাকলেও আপনাকে লিঙ্কের শেষে কিছু সংস্করণ নম্বর (এখানে রয়েছে 0) অন্তর্ভুক্ত করতে হবে । এটি একটি শব্দ নয়, একটি আসল সংখ্যা হতে হবে।
  • আপনি ভূমিকা দরকার, তাদের সাথে git+setuptools বলতে এটা সংগ্রহস্থলের ক্লোন করার বরং একটি জিপ / tarball রূপে নির্দেশ চেয়ে
  • version শাখা, ট্যাগ বা কমিট হ্যাশ হতে পারে
  • --process-dependency-linksপিপ থেকে ইনস্টল করা থাকলে আপনাকে সরবরাহ করতে হবে

1
নোট setup.pyকংক্রিট নির্ভরতা, শুধুমাত্র বিমূর্ত বেশী থাকা উচিত নয়। এটি একটি কংক্রিট নির্ভরতা নির্দিষ্ট করে দিচ্ছে setup.py
জর্জি লিটাও

1
পাইপ সংস্করণ 19.0 প্রকাশের সাথে - - প্রসেস-নির্ভরতা-লিংক বিকল্পটি হ্রাস করা হয়েছে।
yardstick17

14

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

একটি নতুন এসএসএইচ কী তৈরি করুন:

ssh-keygen -t rsa -C "GitLab_Robot_Deploy_Key"

ফাইল হিসাবে দেখা উচিত ~/.ssh/GitLab_Robot_Deploy_Keyএবং ~/.ssh/GitLab_Robot_Deploy_Key.pub

~/.ssh/GitLab_Robot_Deploy_Key.pubগিটল্যাব "ডিপ্লয় কীগুলি" কথোপকথনে ফাইলটির বিষয়বস্তু অনুলিপি করুন এবং আটকান ।

নতুন ডিপ্লোয় কীটি পরীক্ষা করুন

নিম্নলিখিত কমান্ডটি এসএসএইচটিকে সংযোগ স্থাপনের জন্য আপনার নতুন মোতায়েন কী ব্যবহার করতে বলে tells সাফল্যের সাথে আপনার বার্তাটি পাওয়া উচিত: "গিটল্যাব, ইউজারনেম আপনাকে স্বাগতম!"

ssh -T -i ~/.ssh/GitLab_Robot_Deploy_Key git@gitlab.mycorp.com

এসএসএইচ কনফিগারেশন ফাইল তৈরি করুন

এর পরে, একটি ~/.ssh/configফাইল তৈরি করতে একটি সম্পাদক ব্যবহার করুন। নিম্নলিখিত বিষয়বস্তু যুক্ত করুন। 'হোস্ট' মানটি আপনার যে কোনও কিছু হতে পারে (কেবল এটি মনে রাখবেন, কারণ আপনি এটি পরে ব্যবহার করবেন)। হোস্টনামটি আপনার গিটল্যাব দৃষ্টান্তের URL to আইডেন্টিফাইফাইলটি আপনার প্রথম পদক্ষেপে তৈরি করা এসএসএইচ কী ফাইলের পথ।

Host GitLab
  HostName gitlab.mycorp.com
  IdentityFile ~/.ssh/GitLab_Robot_Deploy_Key

কনফিগারেশন ফাইলে এসএসএইচ নির্দেশ করুন

অক্সিয়াম আমাদের এসএসএইচ সহ পাইপ ব্যবহারের রেসিপিটি দিয়েছিল :

pip install git+ssh://git@gitlab.mycorp.com/my_name/my_repo.git

এসএসএইচটিকে আমাদের নতুন ডিপ্লোয় কী ব্যবহার করতে আমাদের এটিকে কিছুটা পরিবর্তন করতে হবে। আমরা এসএসএইচকে কনফিগারেশন ফাইলে হোস্ট এন্ট্রির দিকে নির্দেশ করে do আমরা এসএসএইচ কনফিগারেশন ফাইলে যে হোস্ট নামটি ব্যবহার করেছি তার কমান্ডের মধ্যে 'gitlab.mycorp.com' প্রতিস্থাপন করুন:

pip install git+ssh://git@GitLab/my_name/my_repo.git

প্যাকেজটি এখন কোনও পাসওয়ার্ড প্রম্পট ছাড়াই ইনস্টল করা উচিত।

রেফারেন্স এ
রেফারেন্স খ


7

আমি যখন গিটহাব থেকে ইনস্টল করছিলাম তখন আমি ব্যবহার করতে সক্ষম হয়েছি:

pip install git+ssh://git@github.com/<username>/<projectname>.git#egg=<eggname>

তবে, যেহেতু আমাকে পিপ হিসাবে চালাতে হয়েছিল sudo, তাই এসএসএইচ কীগুলি আর গিটহাবের সাথে কাজ করছে না, এবং "গিট ক্লোন" "অনুমতি অস্বীকার (পাবলিককি)" এ ব্যর্থ হয়েছে। ব্যবহার করে git+httpsআমাকে কমান্ডটি sudo হিসাবে চালানোর অনুমতি দেয় এবং গিটহাব আমাকে আমার ব্যবহারকারী / পাসওয়ার্ড জিজ্ঞাসা করতে পারে।

sudo pip install git+https://github.com/<username>/<projectname>.git#egg=<eggname>

অন্যান্য ব্যবহারকারীর অ্যাকাউন্টগুলিতে আপনার প্রকল্পটি অ্যাক্সেস করা দরকার? যদি তা না হয় তবে আপনি কী নারডওয়ালারের পরামর্শটি
মাইকেল -

7

এছাড়াও আপনি এর মাধ্যমে একটি ব্যক্তিগত সংগ্রহস্থলের নির্ভরতা ইনস্টল করতে পারেন //github.com / ...: Git + + HTTPS জন্য লগইন শংসাপত্রের (লগইন এবং পাসওয়ার্ড অথবা মোতায়েন টোকেন) প্রদানের মাধ্যমে URL টি কার্ল সঙ্গে .netrcফাইল:

echo "machine github.com login ei-grad password mypasswordshouldbehere" > ~/.netrc
pip install "git+https://github.com/ei-grad/my_private_repo.git#egg=my_private_repo"

5

আপনি যদি কোনও সিআই সার্ভারের মধ্যে প্রয়োজনীয় ফাইল থেকে নির্ভরতা ইনস্টল করতে চান বা এটি করতে পারেন তবে আপনি এটি করতে পারেন:

git config --global credential.helper 'cache'
echo "protocol=https
host=example.com
username=${GIT_USER}
password=${GIT_PASS}
" | git credential approve
pip install -r requirements.txt

আমার ক্ষেত্রে, আমি ব্যবহার করেছি GIT_USER=gitlab-ci-tokenএবং GIT_PASS=${CI_JOB_TOKEN}

এই পদ্ধতির একটি সুস্পষ্ট সুবিধা রয়েছে। আপনার একক প্রয়োজনীয় ফাইল রয়েছে যাতে আপনার সমস্ত নির্ভরতা থাকে।


3

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

নীচের কোডটি ধরে নিয়েছে যে ওয়ার্কিং ডিরেক্টরিতে আপনার পাসওয়ার্ড যুক্ত একটি ফাইল রয়েছে যা আপনার পাসওয়ার্ড ধারণ করে।

export PASS=$(cat pass)
pip install git+https://<username>:$PASS@github.com/echweb/echweb-utils.git

0

এই উত্তরের জন্য অক্সিয়ামের সমাধান ঠিক আছে। আমি কেবল sudoএটিই উল্লেখ করতে চাই যে আপনি কীগুলি ব্যবহার করে ইনস্টল করছেন তা সতর্কতা অবলম্বন করা উচিত রুটের জন্যও অবশ্যই সংরক্ষণ করা উচিত (উদাহরণস্বরূপ /root/.ssh)।

তারপরে আপনি টাইপ করতে পারেন

sudo pip install git+ssh://git@github.com/echweb/echweb-utils.git

6
সহজ সমাধান: সুডোর সাথে ইনস্টল করবেন না। পরিবর্তে --userপতাকা বা একটি ভার্চুয়ালেনভ ব্যবহার করুন ।
নার্ডওয়ালার

0

গিটহাব, গিটল্যাব ইত্যাদিতে আপনার নিজের লাইব্রেরি / প্যাকেজ থাকলে লাইব্রেরির একটি কংক্রিট সংস্করণ দিয়ে কমিট করার জন্য আপনাকে একটি ট্যাগ যুক্ত করতে হবে, উদাহরণস্বরূপ, v2.0, এবং তারপরে আপনি আপনার প্যাকেজটি ইনস্টল করতে পারেন:

pip install git+ssh://link/name/repo.git@v2.0

এটি আমার পক্ষে কাজ করে। অন্যান্য সমাধানগুলি আমার পক্ষে কাজ করে নি।


0

এখানে একটি দ্রুত পদ্ধতি যা আমার পক্ষে কাজ করেছিল। কেবল রেপিকে কাঁটাচামচ করুন এবং এটি আপনার নিজের গিটহাব অ্যাকাউন্ট থেকে ইনস্টল করুন

pip install git+https://github.com/yourName/repoName

-1

আসল git cloneকমান্ড (বা থেকে git remote -v) থেকে কেবল রিমোটটি অনুলিপি করুন । আপনি এরকম কিছু পাবেন:

  • বিট বালতি: git+ssh://git@bitbucket.org:your_account/my_pro.git

  • GitHub: git+ssh://git@github.com:your_account/my_pro.git

এর পরে, আপনাকে ডোমেন নামের পাশের :সাথে প্রতিস্থাপন করতে হবে /

সুতরাং ব্যবহার করে ইনস্টল করুন:

pip install git+ssh://git@bitbucket.org/your_account/my_pro.git

"কপি গিট ক্লোন কমান্ড" বলতে কী বোঝ ? আপনি "গিট ক্লোন 'কমান্ড ব্যবহার করে অনুলিপি" বলতে চাচ্ছেন ? অথবা "'গিট ক্লোন' কমান্ডটি অনুলিপি করবেন ? অথবা অন্য কিছু? (দয়া করে আপনার উত্তর সম্পাদনা করে প্রতিক্রিয়া জানান , এখানে মন্তব্যে নয় (যথাযথ হিসাবে) আগাম ধন্যবাদ))
পিটার মর্টেনসেন

-2

আপনি চেষ্টা করতে পারেন

pip install git+git@gitlab.mycorp.com/my_name/my_repo.git

ছাড়া ssh:...। সেটা আমার জন্য কাজ করে.


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