Merhaba arkadaşlar python dosyalarını farklı cihazlarda python yüklemeden çalıştırabilmek için exe’ye çevirmeye çalışıyorum fakat denemediğim program kalmadı hiçbiri düzgün çalışmıyor. py2exe auto-py-to-exe pyinstaller hepsini denedim fakat bir türlü çalışmıyor. Bunların arasında en çok yaklaştığım pyinstaller ama onda da terminal ekranı açılıp kapanıyor herhangi bir hata mesajı falan almıyorum kullandığım scriptte ise şu kütüphaneleri kullanıyorum :
os
time
requests
bs4
selenium
Tek script dosyam var başka projelerde de kullanmak istiyorum fakat onlarda birden fazla .py dosyası ve png mp3 gibi farklı dosyalar da var. Yardımcı olabilir misiniz ?
Pyinstaller ile powershell üzerinden şu şekilde çalıştırıyorum:
pyinstaller ./test1.py --onefile
Pyinstaller işini şu şekilde bitiriyor.
6256 INFO: Building EXE from EXE-00.toc completed successfully.
Daha sonra exe’yi çalıştırmak için dist klasörüne girip --onefile parametresi verdiğim için oluşan test1.exe yi powershellden çalıştırıyorum ve selenium modülünü bulamıyor:
PS D:\Projects\Python\test\dist> .\test1.exe
Traceback (most recent call last):
File “test1.py”, line 1, in
ModuleNotFoundError: No module named ‘selenium’
[7796] Failed to execute script test1
PS D:\Projects\Python\test\dist>
Şeklinde bir hata penceresi açılıyor.
Kodda herhangi bir problem yaşamıyorum normal powershell üzerinden:
python test1.py
şeklinde çalıştırdığımda kodum düzgün çalışıyor fakat pyinstaller ile exeye çevirdiğimde selenium modülünü bulamıyor.
Yardım edebilirseniz çok sevinirim 1 haftadır bu sorunu çözmeye çalışıyorum. Herkese iyi günler dilerim.
PS D:\Projects> pip install pyinstaller
Installing collected packages: pyinstaller
WARNING: The scripts pyi-archive_viewer.exe, pyi-bindepend.exe, pyi-grab_version.exe, pyi-makespec.exe, pyi-set_version.exe and pyinstaller.exe are installed in ‘C:\Users\Emre\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\Scripts’ which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pyinstaller-4.3
PS D:\Projects> pip install selenium
Collecting selenium
Using cached selenium-3.141.0-py2.py3-none-any.whl (904 kB)
Requirement already satisfied: urllib3 in c:\users\emre\appdata\local\packages\pythonsoftwarefoundation.python.3.8_qbz5n2kfra8p0\localcache\local-packages\python38\site-packages (from selenium) (1.26.2)
Installing collected packages: selenium
Successfully installed selenium-3.141.0
hayır mevcut değil de her kütüphane için bunu yapmam mı gerekli ? İnternetten araştırdığım kadarıyla gerekli değil diye biliyorum ayrıca diğer projelerimde onlarca kütüphane kullanıyorum hepsini tek tek kopyalamam mı gerekiyor yani ?
Arkadaşlar şöyle bir şey farkettim biraz geç oldu ama time os gibi gömülü kütüphanelerde bir sorun olmuyor fakat pygame selenium gibi pip ile indirdiğim kütüphanelerde pyinstaller modülleri bulamıyor sorun bundan kaynaklı bunu nasıl çözebilirim ingilizce kaynaklar da dahil bir çok yerden aradım fakat bulamadım çözümünü yardımcı olabilecek biri yok mu uzun zamandır projelerimi exe’ye dönüştüremiyorum.
Eveet 2 haftanın sonunda sorunu çözmeyi başardım arkadaşlar
Şimdi aynı sorunu yaşayan arkadaşlar olursa diye anlatmak istiyorum.
Arkadaşlar öncelikle hatanın ne olduğunu anlayabilmeniz için ya da en azından hata mesajını görebilmeniz için pyinstaller kullanırken --noconsole parametresini kullanmayın ve oluşan exe dosyasını çalıştırırken ise çift tıklayarak çalıştırırsanız sadece failed to execute script şeklinde bir hata alacaksınız bu sorunun hangi satırda olduğunu veya hata mesajını görmenizi engelleyecektir.
Bundan kaçınmak için ise windows kullanan arkadaşlar powershell veya cmd üzerinden, mac os veya linux kullananlar ise terminal üzerinden çalıştırabilir.
Gelelim asıl soruna ModuleNotFoundError: No module named ‘selenium’ burda selenium yerine başka kütüphaneler de olabiliyor. Bu sorun @anon18277073 arkadaşımızın da bahsettiği gibi yüksek ihtimalle pyinstaller’ın kullandığı python farklı. Benim çözüm yöntemim ise windows’un program ekle veya kaldır kısmından python’u kaldırıp tekrar yüklemekle oldu. Ve bende python 3.8 ve 3.9 versiyonları gözüküyordu büyük ihtimalle ben pythonu güncellemişim ve eski versiyonun library dosyaları silinmiş fakat hala kullanılabiliyor. pip ile indirdiğim yeni kütüphaneler yeni versiyona yükleniyordu ve pyinstaller ise yine sebebini bilmediğim bir şekilde 3.9 library dosyası yerine 3.8’i tercih ediyordu böylelikle pyinstaller yeni yüklediğim kütüphaneleri göremiyordu. Ben 2 versiyonu da silip sıfırdan kurulum yaptım yalnız unutmayın python’u silince pip ile yüklediğiniz kütüphaneler de siliniyor yani “yine olmadı” diye üzülmeyin kütüphanelerinizi tekrar indirmeyi unutmayın.
Yardımcı olan arkadaşlara çok teşekkür ederim, herkese iyi günler