امروز میخوایم یک بار در رابطه مشکل معروفی که دوستان با نصب پکیج ها و سپس import نشدنشون دارن حرف بزنیم:
- مطمئن هستم که نصب کردم پکیج رو ولی موقع import کردن ارور میده که پیدا نمیکنه.
- روی ادیتور X به خوبی کار میکنه ولی روی Y نمیشناسه ماژول رو
- و سوال های مشابه این...

خب اول از همه اینکه برای import کردن و استفاده از هر ماژولی باید اون رو نصب کنید از طریق pip در غیر این صورت ارور زیر رو دریافت میکنید:
ModuleNotFoundError: No module named 'yechizi'

ولی حالا مشکل اکثرا اینه که ماژول رو نصب کردیم کامل هم پیام successful رو دیدیم ولی باز نمیتونیم استفاده کنیم.

همون طور که میدونید شما میتونین روی سیستمون ورژن های مختلف پایتون رو داشته باشید و این ها بخوبی کنار هم کار میکنن.
هر پایتونی که نصب میکنید در واقع یه مفسر کاملا جداگانه از بقیه رو نصب میکنید! یعنی مثلا اگه پایتون 3.6 و 3.8 رو دارید هر کدوم کاملا مستقل از هم script های پایتونی شما رو اجرا میکنن و هیچ resource ای مشترک نیست بینشون.

از طرفی پایتون یه چیزی داره به اسم virtual environment که خیلی ساده میاد محیط های ایزوله میسازه برای "هر مفسر" ، که خوبیش اینکه باعث میشه پکیج های مختلف از پروژه های مختلف شما باهم تداخل نداشته باشن. حالا چطور ؟ به این صورت که وقتی شما یه venv جدید میسازین ، پایتون یه نسخه از interpreter اصلی رو به صورت خام داخلش قرار میده(یعنی هیچ پکیج اضافی از قبل نصب شده توش نیست).

حالا نکته ای که هست اینکه موقع installation پایتون وقتی شما اون رو به path سیستمتون اضافه میکنید، فقط و فقط اون مفسر اصلی به path اضافه میشه(بعدا میتونین تغییر بدین) و از طرفی کلمه ی python توی کنسول یا ترمینال فقط میتونه اشاره بکنه به یه مفسر ! این مفسر تو حالت دیفالت همون مفسر اصلیه موقع نصب هست.

پس الان فهمیدیم مشکل از کجاس ! پکیجمون رو توی یه مفسری نصب کردیم ولی داریم از یه مفسر دیگه ای برای اجرای کدمون استفاده میکنیم !

راه حل چیه ؟
1- چک کنیم کجا داریم نصب میکنیم.
2- چک کنیم چجوری داریم ران میکنیم.

import sys
print(sys.executable)

این کد به شما مسیر مفسری که پایتون داره باهاش اجرا میشه رو نشون میده که باهاش میشه همه چیزو فهمید.

وقتی شما cmd یا ترمینال رو باز میکنید میزنید:
pip install yechizi
اون پکیج فقط توی مفسری نصب میشه که آدرس توی path سیستم شما هست. اگر میخواید توی venv دیگه ای نصب بشه باید قبلش active کنید اون مفسرش رو، بعد بزنید. چجوری ؟
windows :
tutorial-env\Scripts\activate.bat

Unix or MacOS:
source tutorial-env/bin/activate

وقتی فعال بشه اسم اون venv داخل پرانتز کنار command هاتون میاد.

برای تستش هم میتونید باز اون sys.executable رو وقتی active کردین بزنین ببنین که داره از مفسر اون virtual environment استفاده میکنه.

این برای virtual environment ها بود ، برای ورژن های مختلف پایتون چی ؟ با یه پسوند ورژنش رو انتخاب میکنید :
python3.6 -m pip install yechizi

حالا اگر موقع نصب اون ورژن مورد نظر از پایتون، اون رو به path اضافه نکرده باشین راه بالا جواب نمیده و مجبورین آدرس کامل pip اش رو بدین و بعد pip رو بزنید(به صورت دیفالت پایتون 3.9.5 در ویندوز اینجاس )
C:\
Users\<user_name>\AppData\Local\Programs\Python\Python39\Scripts\pip install yechizi

چجوری چک کنیم چه پکیج هایی داخل مفسرمون نصب شده ؟ آیا اونی که میخوایم توش هست یا نه ؟ اینجوری : (اکتیو کردنشم که سر جاشه)
pip list

همه ی IDE ها و ادیتور هایی که قابلیت ران کردن script های شمارو دارن ، توی تنظیماتشون میتونید بهش آدرس بدین که از کدوم مفسر استفاده کنن. چه مفسر های global چه مفسر هایی که داخل venv ها هستن.
پس توی این مواقع برید و آدرس مفسری رو بدید که پکیج رو توش نصب کردین.

1 comment

👌🏻👌🏻👌🏻