বিদ্যমান কোনো প্রভিশনিং স্ক্রিপ্ট যদি প্রক্সির মাধ্যমে pip চালাতে হয়, তাহলে pip-কে subprocess হিসেবে চালু করুন। pip-এর অভ্যন্তরীণ Python ফাংশনগুলো সমর্থিত অ্যাপ্লিকেশন API নয়।

import subprocess
import sys

subprocess.run([
    sys.executable,
    '-m', 'pip', 'install',
    '--proxy', 'http://proxy.example:8080',
    'example-package',
], check=True)

উদ্দিষ্ট প্যাকেজ ও প্রক্সি এন্ডপয়েন্ট ব্যবহার করুন। পাবলিক মধ্যস্থতার মাধ্যমে অনুমোদিত পাবলিক প্যাকেজ ডাউনলোডের জন্য HTTP প্রক্সি তালিকা HTTP প্রক্সি আর্গুমেন্টের জন্য প্রার্থী দেয়। sys.executable স্ক্রিপ্ট চালানো Python ইন্টারপ্রেটার বেছে নেয়, ফলে PATH থেকে অন্য ইনস্টলেশনের pip অনিচ্ছাকৃতভাবে ডাকা এড়ানো যায়।

প্রতিটি আর্গুমেন্ট আলাদা তালিকা উপাদানে থাকে। কোনো শেল দরকার নেই, এবং প্রক্সি URL-এ অতিরিক্ত জোড়া এমবেডেড শেল কোটেশন লাগে না। check=True ইনস্টলেশন ব্যর্থ হলে CalledProcessError উত্থাপন করে, যার ফলে প্রভিশনিং ওয়ার্কফ্লো সেই ব্যর্থতা সামলাতে পারে।

ডাউনলোড পথটি এই pip আহ্বানে বা এর subprocess পরিবেশে কনফিগার করুন। মূল প্রোগ্রামের অন্য জায়গায় কনফিগার করা Requests সেশন pip-এর আলাদা প্রক্রিয়াকে কনফিগার করে না।

ইনস্টলেশনের পরে অ্যাপ্লিকেশনের স্বাভাবিক পরিবেশ জীবনচক্র চালিয়ে যান। ইতিমধ্যে চলমান একটি ইন্টারপ্রেটারে ইনস্টল করলে তার বর্তমান আমদানি, ক্যাশ বা পথ তাৎক্ষণিকভাবে নতুন প্যাকেজ প্রতিফলিত করবে বলে নিশ্চয়তা নেই।

সম্পর্কিত নিবন্ধ