রুবির বান্ডলার / পার্লের কার্টনের পাইথন সমতুল্য কী কী?


94

আমি ভার্চুয়ালেনভ এবং পাইপ সম্পর্কে জানি। তবে এগুলি বান্ডিলার / কার্টন থেকে কিছুটা আলাদা।

এই ক্ষেত্রে:

  • পিপ শেবাং বা সক্রিয় স্ক্রিপ্টের নিখুঁত পথটি লিখে
  • পাইপের execসাব কমান্ড নেই ( bundle exec bar)
  • ভার্চুয়ালেনভ পাইথন দোভাষীকে একটি স্থানীয় ডিরেক্টরিতে অনুলিপি করে

প্রতিটি পাইথন বিকাশকারী কি ভার্চুয়ালেনভ / পিপ ব্যবহার করে? পাইথনের জন্য কি অন্য প্যাকেজ পরিচালনার সরঞ্জাম রয়েছে?


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

আমি কিছু সচেতন নই ঠিক (, যা আমি এখন পর্যন্ত জানেন না BTW) রুবি bundler মত। আমার কি করার জন্য ব্যবহার উভয় virtualenv ব্যবহার করা এবং পিপ এবং বা distutils বা যাই হোক না কেন বিতরণ ব্যবস্থা আমি Google প্রথম এটি :) আমি ভাল হিসাবে একটি উত্তর সম্পর্কে জানতে আগ্রহী am কিন্তু এটা আমার অধিকাংশ সময় সমাধান - setuptools।
ব্র্যান্ডজিজি

pipenvshovelএই প্রশ্নটি জিজ্ঞাসা করার পরে এবং নীচে উল্লিখিত আরও আধুনিক পছন্দ রয়েছে।
জিম মেয়ার

পাইপেনভ বা বেলচা উভয়ই সমান নয়। শ্যাওলের কিছুই বান্ডিলারের মতো নয়, আরও রকের মতো। পাইথন নির্ভরতা ব্যবস্থাপনা বেশ পিছনে। এটি একদিন পাইপের সাথে একীভূত হবে যদিও ( পিপিআই.আর / প্রকল্প / পিপ ফাইল )…
নোমাস প্রাইম

উত্তর:


72

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

  1. প্যাকেজ ইনস্টল করা (মণি ইনস্টল)

    pip install mypackage
    
  2. নির্ভরতা এবং বাল্ক-ইনস্টল (জহর ফাইল)

    সম্ভবত সবচেয়ে সহজ উপায় হ'ল পিপের প্রয়োজনীয়তা। টেক্সট ফাইলগুলি ব্যবহার করা। মূলত এটি সম্ভাব্য সংস্করণ সীমাবদ্ধতা সহ প্রয়োজনীয় প্যাকেজগুলির কেবল একটি সরল তালিকা। এটি দেখতে কিছুটা দেখতে লাগবে:

    nose==1.1.2
    django<1.3
    PIL
    

    পরে যখন আপনি সেই নির্ভরতাগুলি ইনস্টল করতে চান আপনি:

    $ pip install -r requirements.txt
    

    প্রয়োজনীয়তা-ফাইল সিনট্যাক্সে আপনার সমস্ত বর্তমান প্যাকেজগুলি দেখার একটি সহজ উপায় হ'ল:

    $ pip freeze
    

    আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন ।

  3. এক্সিকিউশন (বান্ডলার এক্সিকিউট)

    এক্সিকিউটেবল ফাইলের সাথে আসা সমস্ত পাইথন প্যাকেজগুলি সাধারণত ইনস্টলের পরে সরাসরি পাওয়া যায় (যদি না আপনার কাস্টম সেটআপ থাকে বা এটি একটি বিশেষ প্যাকেজ না থাকে)। উদাহরণ স্বরূপ:

    $ pip install gunicorn
    $ gunicorn -h 
    
  4. ক্যাশে (বান্ডলার প্যাকেজ) থেকে ইনস্টলের জন্য প্যাকেজ রত্ন

    আছে pip bundleএবং pip zip/unzip। তবে আমি নিশ্চিত না যে অনেকে এটি ব্যবহার করে কিনা।

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


46
Bundler সম্পর্কে মহান জিনিস ঠিক যে virtualenv অংশ একত্রিত করা হয় এবং বেশিরভাগ ক্ষেত্রেই কোন প্রশাসনিক অধিকার প্রয়োজন হয়। প্রকৃতপক্ষে, বিশ্বব্যাপী একমাত্র রত্নটির প্রয়োজন বান্ডিল হতে পারে। bundle install --path vendorস্থানীয়ভাবে সবকিছু ইনস্টল করে এবং bundle execএটি নির্ধারণের জন্য যথেষ্ট স্মার্ট। সুস্পষ্ট পরিবেশ পরিবর্তনের দরকার নেই।
দেবিলস্কি

11
আমি মনে করি না # 3 পয়েন্টটি সঠিক? কেবল একটি রুবি চালানো কার্যকর বা সাথে করা যায় bundle exec। পুরো বিষয়টি bundle execহ'ল Gemfileএটি এক্সিকিউটেবল চালানোর আগে পরিবেশ অনুসারে পরিবর্তন করে । পাইপ এর সমতুল্য নয় bundle exec, যদিও ভার্চুয়ালেনভ হতে পারে।
শান ম্যাকসি

@ সানম্যাকসি আপনি যখনই ভার্চুয়ালেনভ পরিবেশের সক্রিয় চালাবেন আপনি তত্ক্ষণাত্ পরিবেশের অভ্যন্তরে পরিণত হন v
শাবলিনকে

8
বান্ডেলারের মূল বিষয়টি হ'ল এটি এখন একটি ডিফাক্টো স্ট্যান্ডার্ড, আপনি নিশ্চয়ই গ্যারান্টি দিতে পারেন যে কোনও রুবিই যে কোনও আকারের ভার্চুয়াল প্রকল্পের Gemfileমূলের মধ্যে বসবে, এবং আপনি যেতে পারবেন bundle installএবং আপনিও ভাল, বা bundle --deploymentএটি ' অন্য কোনও সার্ভারে চালানোর জন্য মেশিনটি সরবরাহের জন্য রুবি এর প্রয়োজনীয় সংস্করণ রয়েছে। পাইথনের সহজলভ্যতা নেই। সরঞ্জামগুলি আছে, সাংস্কৃতিক সর্বব্যাপী নয়।
ocodo

17

আপনি পাইপেনভ ব্যবহার করতে পারেন , যার বান্ডলারের সাথে একই রকম ইন্টারফেস রয়েছে।

$ pip install pipenv

Pipenv স্বয়ংক্রিয়ভাবে virtualenv তৈরি করে এবং থেকে নির্ভরতা ইনস্টল Pipfileবা Pipfile.lock

$ pipenv --three           # Create virtualenv with Python3
$ pipenv install           # Install dependencies from Pipfile
$ pipenv install requests  # Install `requests` and update Pipfile
$ pipenv lock              # Generate `Pipfile.lock`
$ pipenv shell             # Run shell with virtualenv activated

আপনি যেমন কমান্ড চালাতে পারেন যেমন ভার্চুয়ালেনভ স্কোপ দিয়ে bundle exec

$ pipenv run python3 -c "print('hello!')"

3

একটি ক্লোন পন্ডার আছে

বর্তমানে পিপে থাকা সংস্করণটি requirements.txtআপনার ইতিমধ্যে উপস্থিত ফাইলটি কেবল পঠন করে তবে এটি পুরানো। এটি সম্পূর্ণ সমতুল্য নয়: এটি একটি তৈরির জন্য জোর দেয় virtualenv। বান্ডলার, আমি লক্ষ্য করেছি, কেবল কী প্যাকেজগুলি অনুপস্থিত রয়েছে তা ইনস্টল করে এবং আপনাকে সিস্টেম ডিয়ারগুলিতে ইনস্টল করতে বা পুনরায় চালু করার জন্য আপনাকে sudo পাসওয়ার্ড দেওয়ার বিকল্প দেয় যা পন্ডলারের কোনও বৈশিষ্ট্য বলে মনে হয় না।

যাইহোক, গিটের সংস্করণটি বান্ডলারের আচরণের আরও কাছাকাছি হওয়ার জন্য একটি সম্পূর্ণ সম্পূর্ণ পুনর্লিখন ... "চিজফিল" থাকা এবং এখন প্রয়োজনীয়তাগুলি সমর্থন না করা সহ .txt। এটি দুর্ভাগ্যজনক, যেহেতু প্রয়োজনীয়তা.টিএসটি পাইথনল্যান্ডের প্রকৃত মান, এবং এটি মানিক করার জন্য এমনকি অফিশিয়াল বিডিএফএল-স্ট্যাম্পড কাজ রয়েছে । যখন এটি কার্যকর হয়, আপনি নিশ্চিত হয়ে উঠতে পারেন যে pbundler এর মতো কিছু ডি-ফ্যাক্টো স্ট্যান্ডার্ডে পরিণত হবে। হায়রে, এখনো বেশ স্থিতিশীল কিছুই আমি জানি যে (কিন্তু আমি চাই ভালবাসেন ভুল প্রমাণিত করা হবে)।


এই প্রকল্পটি নিখোঁজ হয়েছে বলে মনে হচ্ছে। কবিতা বিবেচনা করুন: stackoverflow.com/a/61771381/115075
বিবি।

1

আমি একটি লিখেছি - https://github.com/Dipwalker/pundler । পিআইপি এটিতে pundleইতিমধ্যে নাম নেওয়া হয়েছিল।

এটি requirements(_\w+)?.txtআপনার পছন্দসই নির্ভরতা হিসাবে ফাইলগুলি ব্যবহার করে এবং frozen(_\w+)?.txtহিমায়িত সংস্করণ সহ ফাইলগুলি তৈরি করে।

(_\w+)?জিনিস সম্পর্কে - এই envs হয়। আপনি প্রয়োজনীয়তা_টাস্ট.টিএসটিএসটি তৈরি করতে পারেন এবং তারপরে প্রয়োজনীয়তা. PUNDLEENV=testtxt এর পাশাপাশি আপনার দৌড়ে এই ডিপগুলি ব্যবহার করতে পারেন।

এবং ভার্চুয়ালেনভ সম্পর্কে - আপনার কোনও প্রয়োজন নেই, এটি প্রথমে বান্ডেলারের কাছ থেকে প্যান্ডেল নেয়।


1

পাইথন কবিতা 2020 সাল পর্যন্ত রুবি বান্ডিলারের নিকটতম (এবং ইতিমধ্যে 2018 এর পরে)। এটি ইতিমধ্যে দুই বছরেরও বেশি পুরানো, এখনও খুব সক্রিয়, দুর্দান্ত ডকুমেন্টেশন রয়েছে। curl-pipe-pythonস্টাইলটি ইনস্টল করার প্রস্তাবিত উপায় হিসাবে অভিযোগ করা যেতে পারে , তবে বিকল্প রয়েছে যেমন ম্যাকোজে হোমব্রিউ।

এটি পর্দার পিছনে ভার্চুয়াল্যানভগুলি ব্যবহার করে (বান্ডিলারের বিপরীতে) তবে এটি লক-ফাইল সরবরাহ করে এবং ব্যবহার করে, সাবনির্ভরতার যত্ন নেয়, নির্দিষ্ট সংস্করণের সীমাবদ্ধতাগুলি মেনে চলে এবং স্বয়ংক্রিয়ভাবে পুরানো প্যাকেজগুলি আপডেট করার অনুমতি দেয়। এমনকি আপনার প্রিয় শেলটির জন্য স্বতঃপূরণ রয়েছে।

এটি একটি পাইপোজেক্ট.টমল ফাইল ব্যবহারের সাথে, এটি বান্ডিলারের চেয়েও কিছুটা এগিয়ে যাচ্ছে (একটি রত্নপাখির কাছাকাছি It's এটি জাভাস্ক্রিপ্ট এবং টাইপস্ক্রিপ্টের এনপিএম এবং সুতার সাথেও তুলনাযোগ্য)।

Poetrify (একটি পরিপূরক প্রকল্প) কবিতা জন্য প্রযোজনাগুলি pyproject.toml এ প্রজেক্টগুলিকে রূপান্তর করতে সহায়তা করে।

লক ফাইলটি প্রয়োজনীয়তাগুলিতে রফতানি করা যায় xt পাঠ্যক্রমে poetry export -f requirements.txt > requirements.txt, যদি আপনার অন্য সরঞ্জামের জন্য এটি প্রয়োজন হয় (বা সম্ভাব্য ক্ষেত্রে ফিরে যেতে চান)।


1

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


0

না, সমস্ত বিকাশকারীই ভার্চুয়ালেনভ এবং / বা পাইপ ব্যবহার করে না, তবে অনেক বিকাশকারী এই সরঞ্জামগুলি ব্যবহার / পছন্দ করে

এবং এখন, প্যাকেজ বিকাশ সরঞ্জাম এবং বৈচিত্র্যময় পরিবেশের জন্য যা আপনার আসল প্রশ্ন। একই উদ্দেশ্যে বিল্ডআউট ( http://www.buildout.org/en/latest/ ) এর মতো অন্য কোনও সরঞ্জাম উপস্থিত থাকুন , আপনি যে প্রতিটি প্রকল্প পরিচালনা করেন তার জন্য পাইথন বিল্ড সিস্টেমকে আলাদা করুন। কিছু সময়ের জন্য আমি এটি ব্যবহার করি তবে এখন নেই।

পাইথনে প্রতিটি প্রকল্পের জন্য স্বতন্ত্র পরিবেশগুলি কিছুটা আলাদা Rub আমার ক্ষেত্রে আমি পাইয়ানভ ( https://github.com/yyuu/pyenv ) ব্যবহার করি যা rbenv এর মতো কিছু তবে পাইথনের জন্য। প্রকল্পের জন্য পাইথন এবং ভ্যুচুয়ালেনভের বিভিন্ন সংস্করণ এবং এই বিচ্ছিন্ন পরিবেশে আমি পিপ বা ইজ-ইনস্টল (যদি প্রয়োজন হয়) ব্যবহার করতে পারি।

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