انجمنهای فارسی اوبونتو
کمک و پشتیبانی => انجمن عمومی => نویسنده: behzad1 در 24 فروردین 1402، 04:54 بظ
-
درود.
بعد از اینکه سیستم رو بروزرسانی کردم، خواستم بستهای رو با pip نصب کنم که خطای زیر رو داد:
error: externally-managed-environment
× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
python3-xyz, where xyz is the package you are trying to
install.
If you wish to install a non-Debian-packaged Python package,
create a virtual environment using python3 -m venv path/to/venv.
Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
sure you have python3-full installed.
If you wish to install a non-Debian packaged Python application,
it may be easiest to use pipx install xyz, which will manage a
virtual environment for you. Make sure you have pipx installed.
See /usr/share/doc/python3.11/README.venv for more information.
note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.
طبق چیزی که فهمیدم در نسخه جدید نمیشه بستهها رو خارج از محیط مجازی نصب کرد. طبق دستوری که داده یه محیط مجازی ایجاد کردم و روی اون بسته رو نصب کردم، اما بستههای قبلی که نصب کرده بودم روی محیط مجازی وجود ندارن و باید دوباره نصبشون کرد. چجوری میشه این مشکلو حل کرد؟
-
این مشکل نیست که بخوای حلش کنی. راه درست استفاده از پایتونه.
-
درسته. راهی نیست که کتابخونههایی که نصب کردم رو به محیط مجازی منتقل کنم یا همشون باید دوباره روی محیط مجازی نصب بشن؟
-
فکر کنم دستی میتونید پکیجها رو کپی کنید توی محیط مجازی... یه سرچی بکنید.
-
چیزی پیدا نکردم، بستهها رو دوباره نصب میکنم. ممنون از همگی.
-
با دستور زیر ببینید ماژولها در چه مسیری قرار داره:
import sys
print(sys.path)
حالا توی محیط مجازی مسیرهایی که میخواین رو به متغیر PYTHONPATH اضافه کنید. داخل خود پایتون به sys.path هم میتونید مسیرها رو append کنید اما روش اول بهتره. البته نمیدونم چنین روشی استانداره یا نه ولی خب کاری که میخواین رو انجام میده.
-
باید همه رو توی requirements.txt داشته باشی و از اونجا نصب کنی. اگه بخوای از توزیعت چیزی رو کپی کنی، اتمیک بودن venv رو از بین بردی.