Selenium kütüphanesi kullanan script'i pyinstaller ile exe'ye çevirmek

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 ?

Edit:
Kullandığım python sürümü: 3.9.0
Pyinstaller sürümü: 4.2.0

test1.py adında bir dosya açtım ve içinde şu kodlar var:

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>

Gui dosya yöneticisinden çalıştırmaya çalıştığımda ise terminal ekranı açılıp kapanıyor pyinstaller’ı çalıştırırken --noconsole parametresini verdiğimde ise:

Failed to execute script test1

Ş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.

Merhaba,

pyinstaller ve selenium'u kaldırıp yeniden yüklemeyi deneyin ve sorunun tekrarlanıp tekrarlanmadığına bir bakın.

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

Hiçbir şey değişmedi hala aynı hatayı alıyorum

Exe cevirdiginiz dizinde selenium kutuphanesi mevcut mu ?

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.

test1.spec dosyasının içeriğini buraya atabilir misiniz? Exe’yi oluşturduğunuz dizinde olsa gerek.

test1.spec dosyası bu şekilde:

10.satırdaki hidden_imports'u şu şekilde yazıp

hidden_imports=["selenium"],

sonrasında

pyinstaller --onefile test1.spec

şeklinde deneyebilir misiniz?

Traceback (most recent call last):
File “test1.py”, line 1, in
ModuleNotFoundError: No module named ‘selenium’
[8996] Failed to execute script test1

Şeklinde hala aynı hatayı alıyorum. Dediğim gibi selenium kurulu python test1.py şeklinde çalışıyor.

Acaba bu Python ile pyinstaller’ın kullandığı Python aynı mı?

Mesela şöyle deneyebilir misiniz

python -m PyInstaller --onefile test1.spec
2 Beğeni

Eveet 2 haftanın sonunda sorunu çözmeyi başardım arkadaşlar :slight_smile:

Ş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 :slight_smile:

1 Beğeni