Yüklediğim modül bulunamadı hatası

Sorunu nasıl çözdünüz?

2 Beğeni

Her seferinde yapmak zorunda değilsiniz tabi ki, system interpreter’i venv’deki Python yerine system interpreter olarak değiştirin, sorununuz kökten çözülsün.

Deneyiminiz gösteriyor ki, venv yalıtılmış bir Python ortamı sağlıyor. Bir proje bir kütüphanenin belli bir sürümüne ihtiyaç duyabilirken, başka bir program aynı kütüphanenin farklı bir sürümüne ihtiyaç duyabilir. Neden venv var sorusunu ayrıca araştırmak isterseniz kaynak da bulabilirsiniz.

Pycharm’ın ayarlarını kurcalarsanız, yorumlayıcıyı her proje için değiştirebileceğinizi görebilirsiniz.

Örneğin, benim Python isimli bir klasörüm var, bu klasörde genel sistem yorumlayıcısı aktif. Farklı proje klasörleri var. Her proje klasörünün içinde de ayrı bir venv var. Belirli bir projeyle ilgileneceğim zaman, Pycharm’dan bu projeleri açabiliyorum. Her bir proje açıldığında da kendi sanal ortamındaki python yorumlayıcısıyla açılıyor. Bu projelerden birisi açıkken Pycharm penceresinin altındaki Terminal düğmesine tıklarsanız, venv’i aktif etmiş şekilde cmd ekranı açılır. Dolayısıyla el ile sanal ortamı aktif etmek zorunda kalmazsınız. Ama yapa yapa, sanal ortamı aktif etmenin de zor veya zaman alan bir iş olmadığını görebilirsiniz.

1 Beğeni

Size ekleme yapayım, soru sorana da alternatif bir yöntem olsun.

Pycharm env ayarları yapmak zorunda da kalmak istemiyorsanız.

Pycharm kurulumu esnasında Only me , sadece ben yerine tüm kullanıcılar seçeneğini kurup seçin. Bu durumda, kurduğunuz python kütüphanelerinin hepsine erişebilir izole etmemiş olursunuz.

Bana kalırsa, bir terminal ve bir metin editörü ile kodlamak daha kolay.

Yalnız benim asıl takıldığım kısım bu değil.

Hiç pycharm’a dokunmadan.

Pip ile kütüphaneyi yükledim.

Sonra py ile import etmeyi denedim, kütüphane bulunamadı.

Diğer taraftan söylediğinize katılıyor, bir editör, yada geliştirme aracı kullanıyorsanız, özelliklerini her zaman inceleyin şeklinde tavsiyede bulunuyorum.

Ama hala paketi farklı bir python sürümüne neden attığı konusunda net bir fikir edinemedim.

oysa ki pip list ile kütüphaneyi listede görebiliyordum.

Sonra install ettiği klasöre baktım. Mevcut python sürümü yerine kafasına göre bir python sürümüne kurmuş. Muhtemel ayarlarında da bir problem var kütüphanenin.

Örneklersem daha iyi anlaşılacak sanırım:

piple yükledim.

ki zaten yüklü olduğu için zaten mevcut olduğunu göstererek sonlandı.

Kütüphane kurlu.

Hadi versiyonumuzu kontrol edelim.

Bu iş için 3.10 seçmiştim.

Evet modül bulunamadı. Sebep?

1 Beğeni

python --version 3.10 gösteriyor sizde ama py yazarak girdiğiniz ortam 3.11

Şöyle göstereyim:

PS C:\Users\tanberk\Desktop\test> cmd
Microsoft Windows [Version 10.0.19044.2604]
(c) Microsoft Corporation. Tüm hakları saklıdır.

C:\Users\tanberk\Desktop\test>python -m venv venv

C:\Users\tanberk\Desktop\test>.\venv\Scripts\activate.bat

(venv) C:\Users\tanberk\Desktop\test>pip install python-imagesearch
Collecting python-imagesearch
  Using cached python-imagesearch-1.2.2.tar.gz (4.2 kB)
  Preparing metadata (setup.py) ... done
Collecting opencv-python
  Using cached opencv_python-4.7.0.68-cp37-abi3-win_amd64.whl (38.2 MB)
Collecting numpy
  Using cached numpy-1.24.2-cp311-cp311-win_amd64.whl (14.8 MB)
Collecting python3_xlib
  Using cached python3-xlib-0.15.tar.gz (132 kB)
  Preparing metadata (setup.py) ... done
Collecting pyautogui
  Using cached PyAutoGUI-0.9.53.tar.gz (59 kB)
  Preparing metadata (setup.py) ... done
Collecting mss
  Using cached mss-7.0.1-py3-none-any.whl (76 kB)
Collecting pymsgbox
  Using cached PyMsgBox-1.0.9-py3-none-any.whl
Collecting PyTweening>=1.0.1
  Using cached pytweening-1.0.4.tar.gz (14 kB)
  Preparing metadata (setup.py) ... done
Collecting pyscreeze>=0.1.21
  Using cached PyScreeze-0.1.28-py3-none-any.whl
Collecting pygetwindow>=0.0.5
  Using cached PyGetWindow-0.0.9.tar.gz (9.7 kB)
  Preparing metadata (setup.py) ... done
Collecting mouseinfo
  Using cached MouseInfo-0.1.3.tar.gz (10 kB)
  Preparing metadata (setup.py) ... done
Collecting pyrect
  Using cached PyRect-0.2.0.tar.gz (17 kB)
  Preparing metadata (setup.py) ... done
Collecting pyperclip
  Using cached pyperclip-1.8.2.tar.gz (20 kB)
  Preparing metadata (setup.py) ... done
Installing collected packages: PyTweening, python3_xlib, pyscreeze, pyrect, pyperclip, pymsgbox, pygetwindow, numpy, mss, mouseinfo, pyautogui, opencv-python, python-imagesearch
  DEPRECATION: PyTweening is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for PyTweening ... done
  DEPRECATION: python3_xlib is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for python3_xlib ... done
  DEPRECATION: pyrect is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for pyrect ... done
  DEPRECATION: pyperclip is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for pyperclip ... done
  DEPRECATION: pygetwindow is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for pygetwindow ... done
  DEPRECATION: mouseinfo is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for mouseinfo ... done
  DEPRECATION: pyautogui is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for pyautogui ... done
  DEPRECATION: python-imagesearch is being installed using the legacy 'setup.py install' method, because it does not have a 'pyproject.toml' and the 'wheel' package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the '--use-pep517' option. Discussion can be found at https://github.com/pypa/pip/issues/8559
  Running setup.py install for python-imagesearch ... done
Successfully installed PyTweening-1.0.4 mouseinfo-0.1.3 mss-7.0.1 numpy-1.24.2 opencv-python-4.7.0.68 pyautogui-0.9.53 pygetwindow-0.0.9 pymsgbox-1.0.9 pyperclip-1.8.2 pyrect-0.2.0 pyscreeze-0.1.28 python-imagesearch-1.2.2 python3_xlib-0.15

[notice] A new release of pip available: 22.3.1 -> 23.0.1
[notice] To update, run: python.exe -m pip install --upgrade pip

(venv) C:\Users\tanberk\Desktop\test>python
Python 3.11.1 (tags/v3.11.1:a7a450f, Dec  6 2022, 19:58:39) [MSC v.1934 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import python_imagesearch
>>>

Şöyle söyleyim, py ve python aynı ortama işaret etmiyor.

Yani ben sizi anlıyorum.

Sorunu irdeledim. Aslında sorun değil çözüm.

Yani kütüphane yüklüyor ama kütüphane ortam değişkeni farklı ve hangisini ayarladığınıza göre ona bakıyor.

Zaten bunu doğru ayarlarsak hangi editörde olursa olsun bu sorun yaşanmıyor.

Bunu teyit etmek için zaten site packages klasörlerine elle taşıyıp denedim.

Nerede gördüğünü görmek adına.

Anlatmak istediğim buydu açıkcası.

Sorun olarak görmüyorum, sadece doğru konfigüre edilmeze ortam değişkenleri kütüphane indirip kursanız a ulaşamıyor.

Bunu doğru ayarlamayı öğretirsek, her pyhon editörü için ayrı ayrı ayarlamak gerekmeyebilir diye düşündüm.

Şu anda sadece tek bir Python sürümü kullanıyorum. Daha önce bir kaç farklı sürüm yüklü iken, her python sürümünü ortam değişkenine sürüm ismiyle birlikte eklemiştim ki çakışmalar yaşanmasın.

Çünkü Python kurulurken, ortam değişkenlerine python isminde bir ortam değişkeni atanıyor. İşaret ettiği dosya yolu Python’ın belirli bir sürümüne ait. Ama biz farklı sürümleri aynı anda kullanmak istiyorsak, her bir sürüm için farklı bir ortam değişkeni tanımlamak uygun olur.

Mantıklı.

Aynen işte başlıktaki,

Yüklediğim modül bulunamadı hatası

Bunun neden olduğunu düşünüyorum.

virtual env pycharm için bu işi çözer, diğer taraftan başka bir editörde yine böyle bir sorun çıkabilir .

Olayı simüle ettim:

Şimdi windows ne yapsın, hem 3.9, 310, hem 3.11

path olarak tanımlanmış.

Burada yapılacak düzenleme zaten pycharm da sorunu doğrudan ortadan kaldırırdı diye düşünüyordum.

Evet virtual env ayarlamak localde editör için sorunu çözer ama konut satırından çalıştıranlar yine aynı sorunla karşılaşabilir.

Şu da yanlış anlaşılmasın, env ayarı pycharm için kullanışlı fakat, yeni kullananlar için durumu daha da karışık hale getirebilir.

Onun için şunu yapmak istemiştim.

Söylediği gibi kurduğu halde kütüphane görünmüyorsa.

Ki bunu teyid etmek için pip list ile kütüphaneyi görmek.

Birden çok python sürümü varsa ki özellik bir tane daha eklettim, windows ortam değişkenlerine eklensin ki hangisine yüklendiğini ayırabileyim.

Son aşamada ise hepsini kaldırtıp, tek sürüme göre ayarlarını yaptırmaktı.

Ama maalesef şu an.

Py komutu verdiğinde versiyonu,

python verildiğinde versiyonu,

Ortam değişkenlerindeki dosya yolunu göremedim.

Elimizde sadece pycharm env ayarı kaldı.

Windows’ta python kurulurken py.exe, C:\Windows\ dizinine kopyalanıyor. Yeni bir Python sürümü yüklediğimizde, yüklediğimiz sürümün py.exe dosyası, varsa mevcut py.exe üstüne yazılıyor. Dolayısıyla py.exe, en son yüklü olan python sürümünü işaret ediyor hep.

py.exe de python.exe'yi çalıştırmaya çalışıyor.

python.exe'nin ismini python3.11.exe yapmak, py.exe'nin python.exe'yi bulamamasını sağlar. Ama aynı zamanda Python’ı python3.11 olarak kullanabilme imkanımız oluşur. Bir py.exe dosyasına ihtiyacımız varsa, python3.11.exe'yi çalıştıracak bir py.exe de yazabiliriz. Elimizdeki python sürümü kadar py.exe oluşturabiliriz.

1 Beğeni