আমি পিপ সহ গিট সাব-ডিরেক্টরি থেকে কীভাবে ইনস্টল করতে পারি?


104

আমার অনেকগুলি ফোল্ডার সমেত একটি গিট সংগ্রহস্থল রয়েছে যার মধ্যে একটি পাইপ সহ পাইথন মডিউল ইনস্টলযোগ্য, এটির মতো:

repo.git/
repo.git/folder1/
repo.git/folder2/
repo.git/mymodule/
repo.git/mymodule/__init__.py
repo.git/mymodule/setup.py
repo.git/mymodule/...

এখনই আমাকে ইনস্টল করতে নিম্নলিখিতগুলি করতে হবে:

git clone http://server/repo.git
cd repo
pip install mymodule
cd ..
rm -rf repo

স্পষ্টভাবে ক্লোনিং না করে পিপ দিয়ে সরাসরি মডিউলটি ইনস্টল করা সম্ভব?

আমি চেষ্টা করেছিলাম:

pip install git+https://server/repo.git/mymodule/
pip install git+https://server/repo.git:mymodule/

তবে আমি পেয়েছি:

IOError: [Errno 2] No such file or directory: '/tmp/pip-88tlLm-build/setup.py'

4
এই প্রশ্নের ইতিমধ্যে উত্তর দেওয়া হয়েছে বলে মনে হচ্ছে: stackoverflow.com/questions/10847764/pip-install-from-git-repo
synthesizerpatel

4
আপনার লিঙ্ক করা প্রশ্নটি ফাইলগুলি হারিয়ে যাওয়ার বিষয়ে ছিল কারণ কোনও ম্যানিফাইএসটি.এন.ই নেই। আমার প্রশ্নটি কীভাবে পাইপ সহ একটি উপ-ডিরেক্টরি ইনস্টল করবেন সে সম্পর্কে, কোনও ফাইল অনুপস্থিত না যেহেতু আমি পুরো রেপো ক্লোন করে প্যাকেজটি ইনস্টল করতে পারি।
জে.মার্টিনট-লেগার্ড

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

উত্তর:


120

এই বৈশিষ্ট্যটি সম্পর্কে একটি টান অনুরোধ রয়েছে এবং এটি এক মাস আগে শাখা বিকাশের জন্য একত্রী করা হয়েছে বলে মনে হয়। বাক্য গঠনটি নিম্নলিখিত :

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

এটি মাস্টারটিতে মিশে যায় এবং বিতরণ না হওয়া পর্যন্ত আমাদের সম্ভবত কিছুক্ষণ অপেক্ষা করতে হবে।

আপডেট : এটি এখন https://pip.readthedocs.io/en/stable/references/pip_install/#vcs-suport এ উপলব্ধ এবং ডকুমেন্টেড রয়েছে :

প্রকল্পগুলির জন্য যেখানে setup.py প্রকল্পের মূলের মধ্যে নেই, সেখানে "সাব-ডিরেক্টরি" উপাদান ব্যবহৃত হয়। "সাবডাইরেক্টরি" উপাদানটির মান প্রকল্পের মূল থেকে সেটআপ.পি যেখানে অবস্থিত সেখানে যেতে হবে।

সুতরাং যদি আপনার সংগ্রহস্থলের বিন্যাসটি হয়:

- pkg_dir/
  - setup.py  # setup.py for package ``pkg``
  - some_module.py
- other_dir/
  - some_file
- some_other_file

আপনার ব্যবহার করা দরকার

pip install -e vcs+protocol://repo_url/#egg=pkg&subdirectory=pkg_dir

দ্রষ্টব্য: উইন্ডোজে আপনাকে অবশ্যই ডাবল উক্তিতে ইউআরএল স্থাপন করতে হবে, অথবা আপনি একটি "তম উপপরিচালিত 'অভ্যন্তরীণ বা বাহ্যিক আদেশ হিসাবে স্বীকৃত নয় এমন একটি ত্রুটি পাবেন। যেমন, ব্যবহার করুন:

pip install -e "vcs+protocol://repo_url#egg=pkg&subdirectory=pkg_dir"

4
আমি কেবল যাচাই করেছি এবং এটি পাইপ
ভি

20
আপনি যদি উবুন্টু ব্যবহার করছেন তবে আসল গিটের অবস্থানের আগে একক উদ্ধৃতি চিহ্নগুলি ব্যবহার করার বিষয়টি নিশ্চিত করুন, অন্যথায় & সাব-ডিরেক্টরিকে উপেক্ষা করা হবে! উদাহরণস্বরূপ: পাইপ ইনস্টল করুন- 'গিট + গিট.রেপো /… '
লিন

8
কেবলমাত্র শীর্ষস্থান: এটি প্যাকেজগুলির জন্য (অন্তত পিপ v1.5.6 এ, কমপক্ষে 6+ সংস্করণ সম্পর্কে নিশ্চিত নয়) কাজ করছে বলে মনে হচ্ছে না যার প্রবেশ পয়েন্টগুলি উপ-ডিরেক্টরিতে অন্তর্ভুক্ত রয়েছে। pip install -e 'git+https://…/repo.git@branch#egg=package&subdirectory=package'প্যাকেজের মধ্যে ফলাফল প্রকাশমান ইনস্টল করতে, এবং একটি package.egg-linkফাইল সাইট-প্যাকেজ রাখা পেয়ে - কিন্তু এটা রুট ডিরেক্টরিটি স্থানটিকে src/repo, না করতে src/repo/package, আমি আশা করবে। এর অর্থ এই যে py_modulesআমদানি করা যায় না, এবং entry_pointsআসলে কাজ করে না: তারা উভয়ই একটি বাড়িয়ে তোলে ImportError: No module named package
মার্ক জি।

4
-eপ্রয়োজনীয় বলে মনে হচ্ছে, অন্যথায় pip freezeপুরো পথটি দেখায় না, কেবল ডিম। এটি ঘটেpip-1.5.4
zyxue

4
অন্যের জন্য টিপ: আপনার গিট + https ব্যবহার করতে হবে, গিট + গিট কাজ করবে না, আপনি মারাত্মক হবেন: দূরবর্তী ত্রুটি: সন্ধান পাওয়া যায় নি। সম্ভবত কারণ এটি "ক্যোয়ারী" স্ট্রিংটি সঠিকভাবে বিশ্লেষণ করে না। আমি সবেমাত্র লগইন করেছি: github.com/pypa/pip/issues/4898
amohr

33

এটা ইতিমধ্যেই বিবৃত হয়েছে মন্তব্য এক সঠিক উত্তর অধীনে, কিন্তু এই সমস্যা হাইলাইট করতে যখন লিনাক্স কমান্ড লাইন থেকে এই নির্বাহ, আপনি আবশ্যক অব্যাহতি &-character যেহেতু এম্পারসেন্ড পটভূমিতে কমান্ড চালানোর জন্য কম্যান্ড লাইন কহন হয়:

git+https://git.repo/some_repo.git#egg=version_subpkg\&subdirectory=repo

অ্যাম্পারস্যান্ডের আগে ব্যাকস্ল্যাশটি লক্ষ্য করুন। পালানো আচরণ লিনাক্স ডিস্ট্রোর উপর নির্ভর করে; আমি বিশেষজ্ঞ নই।
আপনি যদি এটিকে অগ্রাহ্য করেন তবে আপনি নিম্নলিখিতগুলির মতো ক্রিপ্টিক ত্রুটিতে চলে যেতে পারেন:

bash: (...) command not found

4
ইউআরএলটি একক উদ্ধৃতিতে বন্ধ করে দেওয়া কি এম্পারস্যান্ড থেকে বেরিয়ে আসার প্রয়োজনীয়তা এড়াতে সহায়তা করবে? আমি জানি যে সিআরএলতে ইউআরএল নিয়ে কাজ করার সময় এটি সহায়ক।
জোশ পীক

4
লক্ষ করার মতো বিষয়: উইন্ডোজ কমান্ড লাইন থেকে এটি সম্পাদন করার সময়, আপনাকে অবশ্যই ইউআরএল ডাবল উদ্ধৃতিতে রেখে দিতে হবে, অথবা আপনি একটি "সাব-ডিরেক্টরী 'অভ্যন্তরীণ বা বাহ্যিক আদেশ হিসাবে স্বীকৃত নয় এমন একটি ত্রুটি পাবেন" উদাহরণস্বরূপ, পাইপ ইনস্টল করুন -e "গিট + মাইরুল / প্রজ # ডিম = সাবপিজি এবং সাব-ডাইরেক্টরি = সাবডির "

সাধারণভাবে, শেল স্ক্রিপ্টগুলির সাথে কাজ করার সময়, নিরাপদ দিকে থাকতে আর্গুমেন্টের চারপাশে ডাবল উদ্ধৃতি ব্যবহার করুন। আরও সেরা অনুশীলনের জন্য দেখুন: শেলচেক.net বা github.com/koalaman/shellcheck
এরিক অ্যারোনস্টি


6
শাখা-ভিত্তিক ইনস্টল ব্যবহারের জন্য:pip install git+ssh://git@github.com/org_or_username/repo.git@branch#subdirectory=path/to/dubdir
আরডিके
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.