برای پروژه Python، مفسر سیستم را با نسخه دلخواه جایگزین نکنید؛ ابزار مدیریت بسته و سرویسهای توزیع ممکن است به همان مفسر وابسته باشند. روی CentOS Linux 7 یا 8 منقضی، ابتدا مقصد پشتیبانیشده انتخاب کنید. نمونه زیر مسیر معمول نصب بسته و محیط مجازی در یک توزیع فعال خانواده RHEL را نشان میدهد؛ نام و نسخه بسته موجود باید از مخزن همان انتشار تأیید شود.
انتخاب مفسر سازگار
cat /etc/os-release
sudo dnf info python3
sudo dnf install python3 python3-pip
python3 --version
نسخه بسته توزیع الزاماً جدیدترین نسخه upstream نیست؛ پشتیبانی امنیتی توزیع و نیاز پروژه را با هم بسنجید. برای نسخه خاص، بسته موازیِ پشتیبانیشده را بررسی کنید، نه تغییر symlink سراسری /usr/bin/python یا حذف بسته سیستمی.
ساخت محیط مستقل پروژه
با حساب عادی در پوشه پروژه اجرا کنید. نام .venv نمونه است و نباید پوشه موجود ناخواسته بازنویسی شود.
mkdir python-demo
cd python-demo
python3 -m venv .venv
source .venv/bin/activate
python -m pip --version
python -c "import sys; print(sys.executable)"
مسیر چاپشده باید به محیط پروژه اشاره کند. فعالسازی فقط PATH همین shell را تغییر میدهد؛ برای سرویس میتوانید مستقیم از مسیر مفسر .venv استفاده کنید. محیط مجازی، مرز امنیتی یا sandbox نیست.
نصب و ثبت وابستگی
python -m pip install Flask
python -m pip freeze > requirements.txt
deactivate
این نمونه Flask را برای یک پروژه آزمایشی نصب میکند. بستهها میتوانند کد اجرا کنند؛ نام و منبع آنها را بررسی کنید. فایل requirements را بازبینی و در پروژه ثبت کنید. برای استقرار قابل تکرار، نسخهها و در صورت نیاز hashها را کنترل کنید؛ خروجی freeze بدون بازبینی، سیاست کامل زنجیره تأمین نیست.
چرا sudo pip مناسب این مسیر نیست؟
نصب سراسری با sudo میتواند بستههای مدیریتشده توزیع را تحت تأثیر قرار دهد. اگر خطای externally-managed-environment دیدید، بهجای شکستن حفاظت، از venv استفاده کنید. برای هر پروژه محیط جدا داشته باشید و روی مقصد جدید آن را از فایل وابستگی بازسازی کنید؛ کپی venv بین مسیرها یا سیستمها قابل اتکا نیست.
کنترل اجرای واقعی
- نسخه Python و مسیر مفسر داخل سرویس باید با محیط آزمون هماهنگ باشد.
- آزمون پروژه و import وابستگیها را با همان حساب اجرا کنید.
- رمزها را در فایل عمومی یا requirements ننویسید و لاگ را از داده حساس پاک کنید.
مطالعه مرتبط
منابع و مستندات
بازبینی محتوا و منابع: ۲۶ مهر ۱۴۰۵. دستورهای نمونه برای محیط مشخصشدهاند؛ پیش از استفاده روی سرویس عملیاتی، سازگاری محیط و نسخه پشتیبان را بررسی کنید.