পাইপ ফাইল এবং পিপফিল.লক কীভাবে ব্যবহৃত হয়?


131

দেখে মনে হচ্ছে পাইপ ফাইল / পিপফিল.লকটি পাইথন প্যাকেজিংয়ের প্রসঙ্গে প্রয়োজনের জন্য প্রতিস্থাপনের উদ্দেশ্যে করা হয়েছে t টেক্সট। এগুলি আসলে কীভাবে কাজ করে সে সম্পর্কে খুব বেশি ডকুমেন্টেশন নেই। আমি পাইথন ওয়েবসাইটের PyPi বিভাগে pipfile একজন নব্য বিবরণ পাওয়া এখানে কিন্তু এটা প্রশংসনীয় নোংরা এবং ফাইলের বিভিন্ন বিভাগে শব্দার্থবিদ্যা ব্যাখ্যা করে নি।

এই ফাইলগুলি কীভাবে বোঝার জন্য কোনও পয়েন্টার?


2
এটি রুবি বিশ্ব Gemfileএবং এর সরাসরি উপমা Gemfile.lock: .lockফাইলটিতে প্রতিটি নির্ভরতার জন্য নির্দিষ্ট সংস্করণ রয়েছে; এই এক্সটেনশন ব্যতীত একটিতে নিয়ন্ত্রণ-মানব সংস্করণগুলি রয়েছে। এটি বলেছিল, এমন কোনও কিছুর ব্যাখ্যা জিজ্ঞাসা করা যা এখনও বিকশিত হচ্ছে এবং সু-সংজ্ঞায়িত হওয়া থেকে অনেক দূরে, অনেক কম মানক, সম্ভবত কিছুটা অকালমেয়।
চার্লস ডাফি

(এবং একইভাবে, এর মধ্যে পার্থক্য Pipfileএবং requirements.txtমূলত এটি হ'ল প্রাক্তন রুবি বিশ্ব থেকে বৈশিষ্ট্যগুলি গ্রহণ করার চেষ্টা করে, অর্থাত্ একাধিক পরিবেশের জন্য নির্ভরতা সেট নির্দিষ্ট করতে সক্ষম এবং একক ফাইলের মধ্যে শর্ত / বিকল্প / ইত্যাদি।)
চার্লস ডাফি

1
দেখে মনে হচ্ছে এটি ইতিমধ্যে হিরোকুতে "পাইথন দিয়ে শুরু করা" রেপোতে ( github.com/heroku/python-getting-started.git ) এর মতো স্থাপন করা হয়েছে যাতে এটির মতো বা না, দেখে মনে হয় এটি উত্পাদন হয়েছে।
স্টিফেন

Gotcha। এটি বলেছিল - দস্তাবেজগুলি আমার কাছে বেশ শক্ত দেখাচ্ছে। আমি জানি না এমন উত্তরে আমি কী লিখতে পারি যা কেবল তাদের পুনরায় বিশ্রাম দেওয়া হবে না।
চার্লস ডাফি

1
আমি যদি ওপিতে তৈরি লিঙ্কটি উল্লেখ করছি তবে বেশ কয়েকটি বিষয় বাদ দেওয়া আছে, উদাহরণস্বরূপ উত্স নামক বিভাগে কিছু থাকার জন্য এটি আসলে কী বোঝায়।
স্টিফেন

উত্তর:


165

আপনার যদি রুবির বান্ডলার বা নোডের এনপিএমের সাথে কিছুটা পরিচিত থাকে তবে এই ফাইলগুলির পিছনে ধারণাটি সহজ এবং ইতিমধ্যে বিদ্যমান সরঞ্জামগুলির সাথে অ্যানালগ। Pipenvউভয়ই একটি প্যাকেজ এবং ভার্চুয়াল পরিবেশ পরিচালন সরঞ্জাম যা এই লক্ষ্যগুলি অর্জন করতে পিপ ফাইল এবং পিপফিল.লক ফাইলগুলি ব্যবহার করে।

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

শুরু হচ্ছে

আপনার প্রকল্পের ফোল্ডারে টাইপ করে পাইপেনভ ব্যবহার শুরু করা সহজ ...

$ pipenv install

... এবং যদি এর মধ্যে ইতিমধ্যে একটি requirements.txtফাইল রয়েছে তবে এটি Pipfileপ্রয়োজনীয়তা এবং ভার্চুয়াল পরিবেশ ফোল্ডার সহ একটি ফাইল তৈরি করবে , অন্যথায়, এটি একটি খালি Pipfileফাইল তৈরি করবে । আপনি যে কিছু ইনস্টল করেছেন সে সম্পর্কে যদি আপনি অপছন্দ বা আপনার মন পরিবর্তন করেন তবে কেবল টাইপ করুন ...

$ pipenv uninstall <package>

... এবং আপনি যেতে ভাল। পাইপেনভ ইতিমধ্যে উত্পন্ন ভার্চুয়াল পরিবেশ সক্রিয় করতে, সাথে যান ...

$ pipenv shell

... এবং আপনার ভার্চুয়াল পরিবেশ সক্রিয় করা হবে। পরিবেশ ছেড়ে যেতে ...

$ exit

... এবং আপনি আপনার আসল টার্মিনাল সেশনে ফিরে আসবেন।

Pipfile

Pipfile ফাইল উভয় উন্নয়ন ও মৃত্যুদন্ড, আপনার পাইথন অ্যাপ্লিকেশন অথবা লাইব্রেরির জন্য প্যাকেজ প্রয়োজনীয়তা উল্লেখ করার উদ্দেশ্যে। আপনি কেবল ব্যবহার করে একটি প্যাকেজ ইনস্টল করতে পারেন ...

$ pipenv install flask

... এবং এটি মোতায়েন এবং প্রয়োগের জন্য নির্ভরতা হিসাবে বা ব্যবহার করে যুক্ত করা হবে ...

$ pipenv install --dev pytest

... এবং এটি উন্নয়নের সময়ের জন্য ডিপেন্সন্সি হিসাবে ব্যবহৃত হবে। ফাইল সিনট্যাক্স নীচে হিসাবে বেশ সোজা এগিয়ে।

[[source]] # Here goes your package sources (where you are downloading your packages from).
url = "https://pypi.python.org/simple"
verify_ssl = true
name = "pypi"

[packages] # Here goes your package requirements for running the application and its versions (which packages you will use when running the application).
requests = "*"
flask = "*"
pandas = "*"

[dev-packages] # Here goes your package requirements for developing the application and its versions (which packaes you will use when developing the application)
pylint = "*"
wheel = "*"

[requires] # Here goes your required Python version.
python_version = "3.6"

Pipfile.lock

Pipfile.lock নির্দিষ্ট করতে দেয়ার উদ্দেশ্যে করা হচ্ছে, প্যাকেজ উপস্থিত উপর ভিত্তি করে Pipfile স্বয়ংক্রিয়ভাবে প্যাকেজ একে অপরের উপর নির্ভর আপগ্রেড এবং আপনার প্রকল্পের নির্ভরতা গাছ ভঙ্গ ঝুঁকি এড়ানো, যা ঐ নির্দিষ্ট সংস্করণটিতে ব্যবহার করা উচিত।

আপনি বর্তমানে ইনস্টল করা প্যাকেজগুলি ব্যবহার করে লক করতে পারেন ...

$ pipenv lock

... এবং বর্তমানে ইনস্টল হওয়া সংস্করণগুলির ভিত্তিতে স্বয়ংক্রিয়ভাবে আপনার জন্য লক ফাইলটি তৈরি করতে এই সরঞ্জামটি আপনার ভার্চুয়াল পরিবেশ ফোল্ডারটি অনুসন্ধান করবে। ফাইল সিনট্যাক্সটি পাইপফাইলের মতো সুস্পষ্ট নয় , সুতরাং সংক্ষিপ্ততার জন্য এটি এখানে প্রদর্শিত হবে না।


এটি একটি আকর্ষণীয় উত্তর, তবে আমি মনে করি যখন আমি জিজ্ঞাসা করছিলাম তখন আমি আসলে বুঝতে পারছিলাম না আসলে কী বোঝায় [[source]]যে প্যাকেজগুলি যেগুলি পিপেনভ বা অন্য কিছু ডাউনলোড করে? আমার ধারণা, বাকি দুটি ফাইলই যথেষ্ট সুস্পষ্ট।
স্টিফেন

1
আমি স্বীকার করব, আমি এটিকে বিভ্রান্তিকর বলে মনে করেছি কারণ আমি এমন একটি টিউটোরিয়ালটিতে কাজ করছি যেখানে আমাকে সিদ্ধান্ত নিতে হবে যে [প্যাকেজ] / [দেব-প্যাকেজ] পার্থক্যটি গুরুত্বপূর্ণ, বা আমার কেবল [প্যাকেজ] এ সবকিছু রাখা উচিত কিনা। (এটির জন্য গুগলিংই আমাকে এই পৃষ্ঠায় নিয়ে গেছে)) তবে [প্যাকেজে] দেব স্টাফ রাখার সময় উভয়ই আমাকে ফেলে দেয়। [প্যাকেজ] এর মধ্যে কেন অনুরোধগুলি থাকা উচিত তা আমি দেখতে পেতাম।
আল সুইগার্ট

1
পরিবর্তন হয়েছে, যেমন অনুরোধ উন্নয়ন প্যাকেজ দ্বিধা এড়াতে আপনি, ধন্যবাদ আপনি মন্তব্য জন্য, আশা করি এটা কম এখন বিভ্রান্তিকর :)
danieldeveloper001

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

1
@ স্টিফেন, এটি আসলে বিপরীত, পিপেনভ ইনস্টল ডকুমেন্টেশনে বর্ণিত হিসাবে আপনি --skip-lockপতাকাটি নির্দিষ্ট করে Pipfile.lockফাইলটিকে এটি ব্যবহার করতে বাধ্য করার পরিবর্তে তা
এড়াতে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.