একাধিক পরিবেশের জন্য কীভাবে প্রয়োজনীয়তাগুলি। টেক্সট কাস্টমাইজ করবেন?


111

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

সংগঠিত করার সর্বোত্তম উপায় কী?

আমি যা ভেবেছিলাম:

  • পৃথক প্রয়োজনীয় ফাইলগুলি বজায় রাখুন, প্রতিটি শাখায় একটি করে (অবশ্যই ঘন ঘন মার্জগুলিতে টিকে থাকতে হবে!)
  • হিরোকুকে বলুন কোন ফাইলটি আমি ব্যবহার করতে চাই (পরিবেশের পরিবর্তনশীল?)
  • ডিপ্লয় স্ক্রিপ্টগুলি লিখুন (টেম্প শাখা তৈরি করুন, প্রয়োজনীয় ফাইলগুলি সংশোধন করুন, প্রতিশ্রুতিবদ্ধ করুন, মোতায়েন করুন, টেম্প শাখা মুছুন)

1
সহজ স্ক্রিপ্ট মোতায়েন: 2 ফাইল বজায় রাখা। তাদের মধ্যে sylink ব্যবহার করুন।
উদী

উত্তর:


205

আপনি আপনার প্রয়োজনীয় ফাইলগুলিকে ক্যাসকেড করতে পারেন এবং একটি ফাইলের লিখিত সামগ্রীর অন্তর্ভুক্ত করার জন্য পাইপ বলতে "-r" পতাকা ব্যবহার করতে পারেন। আপনি আপনার প্রয়োজনীয়তাগুলি এই জাতীয় মডেলারের ফোল্ডারের স্তরক্রমের মতো ছড়িয়ে দিতে পারেন:

`-- django_project_root
|-- requirements
|   |-- common.txt
|   |-- dev.txt
|   `-- prod.txt
`-- requirements.txt

ফাইলগুলির বিষয়বস্তুগুলি এর মতো দেখতে পাবেন:

common.txt:

# Contains requirements common to all environments
req1==1.0
req2==1.0
req3==1.0
...

dev.txt:

# Specifies only dev-specific requirements
# But imports the common ones too
-r common.txt
dev_req==1.0
...

prod.txt:

# Same for prod...
-r common.txt
prod_req==1.0
...

হেরোকুর বাইরে আপনি এখন পরিবেশগুলি সেটআপ করতে পারেন:

pip install -r requirements/dev.txt

অথবা

pip install -r requirements/prod.txt

যেহেতু হিরোকু প্রকল্পের মূলটিতে "প্রয়োজনীয়তা.txt" জন্য সুনির্দিষ্টভাবে দেখছেন, এটি কেবল এইভাবেই আয়না করা উচিত:

requirements.txt:

# Mirrors prod
-r requirements/prod.txt

2
আপনি হিরকুতে বিভিন্ন পরিবেশের জন্য পৃথক প্রয়োজনীয় ফাইলগুলি কীভাবে ব্যবহার করবেন সেই সমস্যাটিকে উপেক্ষা করেছেন।
এড জে

29
আমি বিশ্বাস করি আমার উত্তরটি সেটির সমাধান করেছে।
ক্রিশ্চিয়ান অ্যাবট

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

1
আমি আপনার প্রশ্নের ভুল বোঝাবুঝি করতে পারি বা সম্ভবত আপনার প্রশ্নটি মূল পোস্টারের চেয়ে আলাদা। তবে স্পষ্টকরণের জন্য, মঞ্চের শাখার প্রয়োজনীয়তাগুলি। টেক্সটটিতে "-r প্রয়োজনীয়তা / স্টেজিং.টেক্সট" (বা অনুরূপ) থাকতে পারে, তবে প্রোড শাখার "-r প্রয়োজনীয়তা / প্রোড। টেক্সট" থাকতে পারে (আমার উত্তরটির শেষে দেখুন)। উপযুক্ত শাখাটিকে তার সম্পর্কিত হিরোকু দৃষ্টান্তের সাথে সিঙ্ক করুন।
খ্রিস্টান অ্যাবট

2
@ সোহমনাওয়াদিয়া যা আমি জিজ্ঞাসা করি তা নয়। ধরা যাক যে আমার এতে base.txt3 টি প্যাকেজ রয়েছে এবং এতে dev.txt1 টি প্যাকেজ রয়েছে (এবং -r base.txt)। সমস্ত 4 টি প্যাকেজ আমার ভার্চুয়াল পরিবেশে ইনস্টল করা আছে। আমি এখন 5 তম প্যাকেজটি ইনস্টল করতে এবং এটি বেসে তালিকাভুক্ত করতে চাই, দেব নয়, আমি এটি কীভাবে করব? অবশ্যই, আমি এটি ইনস্টল করতে পারি এবং pip freeze > base.txtএটি সমস্যার সমাধান করে না। এরপরে এটি চতুর্থ দেব নির্ভরতা বেসে রাখে যা আমি চাই না।
মনান মেহতা

10

আজ একটি কার্যক্ষম বিকল্প যা মূল প্রশ্ন ও উত্তর পোস্ট করা হয়েছিল তখন বিদ্যমান ছিল না নির্ভরতা পরিচালনার জন্য পাইপের পরিবর্তে পাইপেনভ ব্যবহার করা ।

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

উত্পাদন এবং বিকাশ উভয় ক্ষেত্রে ব্যবহারের জন্য একটি প্যাকেজ ইনস্টল করতে:

pipenv install <package>

শুধুমাত্র বিকাশের পরিবেশের জন্য একটি প্যাকেজ ইনস্টল করতে:

pipenv install <package> --dev

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

সরঞ্জামটির সম্পূর্ণ ডকুমেন্টেশনের জন্য পাইপেনভ লিঙ্কটি দেখুন।


4
পাইপেনভ হ'ল সময় নষ্ট। লক করতে খুব বেশি সময় লাগে।
নুরেটিন

9
পাইপেনভ প্রায় সব দিক থেকেই ভাঙা। এটা তোলে জাহাজ খুব কম অনেক প্রতিশ্রুতি, কিন্তু
ospider

4
@ স্পাইডার দৈনিক বেসে পাইপেনভ ব্যবহার করছেন এবং আপনি এবং নুরেটিন যেভাবে প্রতিবেদন করছেন সে রকম নেতিবাচক সমস্যাগুলি ভোগ করছে না। পাইপেনভ সংস্করণ 2018.10.13 এর সাথে কাজ করা। সমস্ত দিক ভাঙা এইভাবে একটি খুব ফাঁকা বিবৃতি।
Kwuite

1
@ কুয়েট আমি আপনার শেষ বাক্যটির অনুভূতি শেয়ার করছি। কোনও মন্তব্য গুরুতর হলেও শূন্য থাকলে তাতে জড়িত থাকার জন্য খুব কম সংলাপ রয়েছে।
খ্রিস্টান অ্যাবট

3
নুরেটিন এবং অস্পাইডারের সাথে সম্মত হন। পাইপেনভ ভয়ঙ্কর।
অ্যান্ড্রু পামার

3

যদি আপনার প্রয়োজনীয়তা একই মেশিনে পরিবেশের মধ্যে স্যুইচ করতে সক্ষম হয় তবে আপনার যে পরিবেশে স্যুইচ করতে হবে তার জন্য বিভিন্ন ভার্চুয়ালেনভ ফোল্ডার তৈরি করা প্রয়োজন হতে পারে।

python3 -m venv venv_dev
source venv_dev/bin/activate
pip install -r pip/common.txt
pip install -r pip/dev.txt
exit
python3 -m venv venv_prod
source venv_prod/bin/activate
pip install -r pip/common.txt
exit
source venv_dev/bin/activate
# now we are in dev environment so your code editor and build systems will work.

# let's install a new dev package:
# pip install awesome
# pip freeze -r pip/temp.txt
# find that package, put it into pip/dev.txt
# rm pip/temp.txt

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