Bu konudaki payımız esasen sıfırdır: Biz Geonode olarak proxy satıyoruz ve bunun bir Python kütüphanesinin kurulmasıyla hiçbir ilgisi yoktur. İkisinin kesiştiği tek nokta bir cümle ile açıklanmaya değer — eğer pip install kurumsal bir ortamda takılırsa, bu genellikle ağınızın gerektirdiği ve pip'in bilmediği bir proxy'dir; bunun çözümü ise pip install --proxy adresindeki komut ya da standart ortam değişkenleridir. Bu durum yazının sonunda ele alınmaktadır. Buradaki diğer her şey için ne altyapı ne de satın alma gereklidir.
Kısa Cevap
python -m venv sklearn-env
source sklearn-env/bin/activate # Windows: sklearn-env\Scripts\activate
pip install -U scikit-learn
Ya da conda ile:
conda create -n sklearn-env -c conda-forge scikit-learn
conda activate sklearn-env
Resmi belgeler her iki yöntemi de sunmakta ve ortam konusunda şu vurguyu yapmaktadır: "Sanal ortam isteğe bağlıdır ancak diğer paketlerle olası çakışmaları önlemek için kesinlikle tavsiye edilir".
Ayrıca, kullanıcıların sık sık gözden kaçırdığı bir hatırlatma da eklenmiştir: "Yeni bir terminal oturumu başlattığınızda, herhangi bir Python komutunu çalıştırmadan önce seçtiğiniz ortamı etkinleştirmeyi her zaman unutmamalısınız." "Dün çalışıyordu" şeklindeki raporların büyük bir kısmı, ortamın etkinleştirilmediği yeni bir terminalden kaynaklanmaktadır.
pip install sklearn Neden Başarısız Oluyor?
Bu alanda en sık sorulan soru budur ve cevabı, kasıtlı bir tasarımdır.
sklearn, ithalat adıdır. scikit-learn ise paket adıdır. İlki pip’e yazdığınızda, tek amacı sizi durdurmak olan bir yer tutucu yüklenir.
PyPI'daki bu yer tutucunun açıklaması oldukça açıktır: "sklearn paketi artık kullanılmamaktadır, bunun yerine scikit-learn kullanın", "pip install sklearn yerine pip install scikit-learn kullanın" ve "pip gereksinim dosyalarınızda sklearn yerine scikit-learn kullanın" yönlendirmeleri de bulunmaktadır.
Bunun var olmasının nedeni, belgelerinde açıkça belirtildiği üzere bir tedarik zinciri sorunudur:
PyPI'daki
sklearnpaketi, kötü niyetli kişilerinsklearnpaketini kullanmasını önlemek için mevcuttur; zirasklearn(ithalat adı) vescikit-learn(proje adı) bazen birbirinin yerine kullanılmaktadır.
Başka bir deyişle, paket yöneticileri bu kafa karıştırıcı adı, başkalarının kullanamaması için kendileri için ayırmışlardır. Bu adı yazanların sayısını düşünürsek, bu mantıklı bir hareketti.
Paket, karşılaşmanız durumunda bilmeniz gereken üç istisnai durumu belgelemektedir:
- "
pip install sklearn==1.1.3komutu, 1.1.3 sürümünün mevcut olmadığını söyleyecektir, bu da kafa karıştırıcıdır" — yer tutucunun yalnızca kendi sürüm numaraları vardır. - "
pip uninstall sklearnkomutu,scikit-learnpaketini aslında kaldırmaz; daha sonra yine deimport sklearnkomutunu çalıştırabilirsiniz". pip listdizininde her ikisinin de bulunması kafa karıştırıcıdır, ancak her ikisini de yanlışlıkla yüklediyseniz bu normaldir.
Bir kaçış yolu var — SKLEARN_ALLOW_DEPRECATED_SKLEARN_PACKAGE_INSTALL=True ayarını yapmak — ve bu "son çare" olarak tanımlanıyor. Eğer bu çareye başvurmak zorunda kalırsanız, asıl çözüm neredeyse her zaman gereksinimler listesinde sklearn adresini içeren bir bağımlılığınızdır. Yer tutucunun kendi tavsiyesine uymakta fayda var: "hangi paketin scikit-learn yerine sklearn adresini kullandığını takip edin ve bunu sorun izleme sistemine bildirin".
Kendi dosyalarınızda her zaman scikit-learn yazın. Kodunuzda her zaman import sklearn yazın. Bu asimetri kalıcıdır.
Gereksinimler
Eylül 2026’da kontrol edilen mevcut sürümün paket meta verilerinden alınmıştır.
scikit-learn 1.9.0, 2 Haziran 2026 tarihinde yayınlanmıştır ve Python 3.11 veya üstü gerektirir.
Çalışma zamanı bağımlılıkları:
| Bağımlılık | Minimum sürüm |
|---|---|
| NumPy | 1.24.1 |
| SciPy | 1.10.0 |
| joblib | 1.4.0 |
| threadpoolctl | 3.5.0 |
| narwhals | 2.0.1 |
Bu tabloyla ilgili iki not.
narwhals nispeten yeni bir eklentidir ve eski sürümler için yazılmış belgelerde veya öğreticilerde yer almayacaktır. Bağımlılıkları pip'in çözmesine izin vermek yerine manuel olarak sabitliyorsanız, büyük olasılıkla gözden kaçıracağınız bağımlılık budur.
Python sürüm sınırı değişiyor. Kurulum sayfasındaki bağımlılık tablosu, belgelendiği sürümü yansıtır ve son sürümlerde gereksinimler artmıştır. Daha eski bir Python sürümü kullanıyorsanız, pip hata vermek yerine daha eski bir scikit-learn sürümünü kullanacaktır — bu genellikle sorun yaratmaz ve bazen okuduğunuz eksik bir özelliğin nedeni de budur.
Performans karşılaştırması, belgeler, örnekler ve testler için isteğe bağlı ek bileşenler tanımlanmıştır; bunlar matplotlib, pandas, polars, pyarrow ve diğerlerini içerir. Kütüphaneyi kullanmak için bunların hiçbirine ihtiyacınız yoktur.
Sanal Ortam Kullanmadan Kurulum
Bazen gerçekten sistem genelinde bir kurulum yapmak istersiniz ve buna ilişkin bir uyarı bulunur.
Belgelerde özellikle Linux ile ilgili şu açık ifade yer almaktadır: "Özellikle Linux altında, pip paketlerinin dağıtımın paket yöneticisi (apt, dnf, pacman…) tarafından yönetilen paketlerin yanına kurulması önerilmez."
Bunun nedeni, hem pip hem de dağıtımınızın paket yöneticisinin, sistemdeki Python site-packages dizinindeki dosyalara sahip olduklarını düşünmeleridir; aralarında anlaşmazlık olduğunda ise sonuç, nedenini bulması zor olan tuhaf davranışlar sergileyen bir Python kurulumu olur. Güncel dağıtımlarda pip, "harici olarak yönetilen ortam" hatasıyla yüklemeyi tamamen reddeder; bu durum, paketleme ekosisteminin tam da bunu önlemesi nedeniyledir.
Bu hatayla karşılaşırsanız, tercih sırasına göre seçenekleriniz şunlardır: sanal ortam kullanın, komut satırı araçları içpipx'i kullanın, dağıtımınızın kendi python3-sklearn paketi varsa onu kullanın ya da — ne yaptığınızın farkında olarak — sizi caydırmak amacıyla bu isimle adlandırılmış --break-system-packages bayrağıyla geçersiz kılın.
macOS ve Windows'ta baskı daha azdır ancak tavsiye geçerliliğini korur. Proje başına bir sanal ortam oluşturmak on saniye sürer ve bir dizi sorunu tamamen önler.
Kurulumu Doğrulama
Kılavuzda komutlar verilmiştir ve bunları çalıştırmak için harcadığınız otuz saniye kesinlikle buna değer.
python -m pip show scikit-learn # version and install location
python -m pip freeze # everything in the environment
python -c "import sklearn; sklearn.show_versions()"
conda ile:
conda list scikit-learn
conda list
Bir sorun bildirirken
sklearn.show_versions()
komutunu kullanmalısınız. Bu komut, scikit-learn sürümünü, Python sürümünü ve derleme bilgisini, ayrıca altta yatan sayısal kuyruğun sürümlerini gösterir — ki bunlar, herhangi bir bakım sorumlusunun ilk olarak isteyeceği bilgilerdir.
Bir şey garip davranıyorsa, pip show
adresindeki yükleme konumuna bir göz atmalısınız. Eğer bulunduğunuzu düşündüğünüz ortamdan başka bir yere işaret ediyorsa, cevabınızı bulmuşsunuz demektir: import sklearn
komutu, yol üzerinde ilk sırada bulunan yüklemeyi bulur ve bu, az önce yüklediğiniz sürüm olmayabilir.
conda ve pip Karşılaştırması
Her ikisi de çalışır. Seçim, esas olarak ikisini bir arada kullanıyorsanız önem kazanır; ancak bunu gelişigüzel bir şekilde yapmamalısınız.
conda'yı şu durumlarda kullanın: halihazırda bir conda ortamınız varsa, belirli derlenmiş sayısal kütüphanelere ihtiyacınız varsa veya kaynak koddan derleme yapmanın gerekli olduğu bir platformda çalışıyorsanız. Resmi talimatlarda belirtildiği gibi, kanal olarak conda-forge adresini tercih edin.
pip'i şu durumlarda kullanın: çoğu projeyi kapsayan sıradan bir Python sanal ortamındaysanız. Wheels dosyaları yaygın platformlar için yayınlanır; bu sayede derleme gerekmez ve kurulum saniyeler sürer.
Düşünmeden bunları tek bir ortamda karıştırmayın. Bir paketi conda ile kurup ardından bir bağımlılığı pip ile güncellemek, conda'nın meta verilerinin artık gerçek durumu yansıtmadığı bir ortam yaratır ve ortaya çıkan hataları teşhis etmek oldukça zordur. Eğer mecbur kalırsanız, önce conda ile yükleyebileceğiniz her şeyi yükleyin ve ancak o zaman conda’da bulunmayanlar için pip’i kullanın.
Hangi ortamda olduğunuzu anlamanın pratik bir yolu vardır: which python adresi bir conda ortam dizinine yönlendiriyorsa, o ortam için conda’yı kullanın.
Kurulum Sonrası Sık Karşılaşılan Hatalar
Başarılı bir kurulumun ardından ModuleNotFoundError: No module named 'sklearn' hatası. Neredeyse her zaman sorun yanlış ortamdan kaynaklanır — farklı bir terminal, farklı bir yorumlayıcı ya da başka bir yere yönlendirilmiş bir notebook çekirdeği. Şu komutla kontrol edin:
import sys; print(sys.executable)
ve kurulum yaptığınız ortamla karşılaştırın. Özellikle Jupyter'da, çekirdek terminal ortamından ayrı bir seçimdir ve birine kurulum yapmak diğerine hiçbir etki etmez. Not defteri içindeki %pip install scikit-learn komutu, çekirdeğin ortamına kurulum yapar; bu, güvenilir bir çözümdür.
ImportError NumPy'den veya ikili dosya uyumsuzluğundan bahsediyor. Genellikle derlenmiş sürümler arasındaki uyumsuzluktan kaynaklanır; bu durum çoğunlukla NumPy’nin bağımsız olarak güncellenmesinden kaynaklanır. Her ikisini birlikte yeniden yüklemek sorunu çözer:
pip install --force-reinstall --no-cache-dir numpy scipy scikit-learn
Kaynak koddan derlemeye çalışan bir derleme. Bu, platformunuz ve Python sürümünüzle eşleşen bir wheel bulunmadığı anlamına gelir — genellikle wheel’lerin yayınlanmasından önceki çok yeni bir Python sürümü veya alışılmadık bir mimari. Birkaç hafta beklemek veya biraz daha eski bir Python sürümü kullanmak, bir derleme araç zinciri kurmaktan daha kolaydır.
pip list dizininde hem sklearn hem de scikit-learn dosyaları var. Bir noktada bu yer tutucuyu kurmuşsunuz. Bunu kaldırmak güvenlidir: pip uninstall sklearn. Belgelerde de belirtildiği gibi, bu işlem "aslında scikit-learn dosyasını kaldırmayacaktır".
İş parçacıkları veya threadpoolctl ile ilgili uyarılar. scikit-learn, altta yatan BLAS kütüphanelerinin iş parçacığı havuzlarını yönetmek için bunu kullanır. OMP_NUM_THREADS ayarını açıkça belirlemek bu sorunların çoğunu çözer ve kısıtlamasız bir kütüphanenin, CPU sınırınıza bakılmaksızın her ana bilgisayar CPU'su başına bir iş parçacığı oluşturacağı konteyner ortamlarında bu ayarı yapmak her halükarda faydalıdır.
Tekrarlanabilirlik için Sürümleri Sabitleme
Yükleme işlemi tek seferlik bir işlemdir; aynı yüklemeyi gelecek ay da korumak ise daha zor bir sorundur ve buna ihtiyaç duymadan önce gerekli ayarlamaları yapmanızda fayda vardır.
Sürümleri kafanızda değil, bir gereksinim dosyasında sabitleyin. Bugün basit bir ``pip install scikit-learn`
` komutu ile altı ay sonra aynı komutu çalıştırdığınızda farklı sürümler elde edersiniz; ayrıca scikit-learn'in API'si küçük sürüm güncellemeleri arasında değişir — tahminciler yeni parametreler kazanır, varsayılan değerler değişir ve bazen bir şey kullanımdan kaldırılma döngüsünün ardından kaldırılır:
scikit-learn==1.9.0
numpy==2.3.1
scipy==1.16.0
Sadece scikit-learn'i değil, sayısal yığını da sabitleyin. Bu ekosistemdeki çoğu tekrarlanabilirlik hatası, sabitlenmiş bir scikit-learn'in altında NumPy veya SciPy'nin değişmesinden kaynaklanır; çünkü bunlar arasındaki derlenmiş arayüzler, sürüm belirticilerinin ima ettiğinden daha sıkıdır. Ağacın tepesini sabitleyip geri kalanını serbest bırakmak, en çok sorun çıkaran düzenlemedir.
Dosyayı elle yazmak yerine çalışan bir ortamdan oluşturun:
pip freeze > requirements.txt
Bu, geçişli bağımlılıklar da dahil olmak üzere her şeyi kapsar; bu da bir uygulama için istediğiniz şeydir. Yayınladığınız bir kütüphane için ise aralıkları belirtin ve çözümü kullanıcılara bırakın — tam sürümleri sabitleyen bir kütüphane, başka hiçbir şeyle birleştirilemez hale gelir.
**Sonuçlarınızın yanınsklearn.show_versions()
ları da kaydedin.** Model çıktıları kütüphane sürümüne bağlıdır ve kaydedilmiş bir model, rastgele sürümler arasında taşınamaz — farklı bir sürümle kaydedilmiş bir tahmincinin pickle'ından çıkarılması uyarı verebilir, başarısız olabilir veya sessizce farklı davranabilir. Sürüm bilgilerini kalıcı bir modelin yanına kaydetmek, gelecekteki bir muammayı basit bir arama işlemine dönüştürür.
Ayrıca, depolama biçimi olarak pickle formatındaki modellere şüpheyle yaklaşın. Bu modeller, kendilerini oluşturan sürümün sınıf yapısını içerir; bu nedenle sürüm yükseltmelerinde bozulurlar ve yüklendiklerinde kod çalıştırırlar — dolayısıyla güvenilir olmayan bir kaynaktan gelen bir pickle dosyası, bir veri dosyası olmaktan ziyade rastgele kod çalıştırma anlamına gelir. Uzun ömürlü her şey için, veri alışverişi amacıyla tasarlanmış bir formatı tercih edin ya da en azından modelin yeniden oluşturulabilmesi için eğitim kodunu ve verilerini saklayın.
Kurumsal Proxy Arkasına Kurulum
Konumuzun doğrudan ilgili olduğu ve belirtinin belirgin olduğu tek durum budur.
pip install
adresi, ad çözümleme hatasıyla hemen hata vermek yerine takılıp kalıyor ve ardından zaman aşımına uğruyorsa, ağınızda muhtemelen pip’in tanımadığı bir proxy kullanılması gerekiyor.
pip install --proxy http://user:password@proxy.example.com:9000 scikit-learn
Ya da ortam ayarları yoluyla, ki bu conda ve diğer çoğu araç için de geçerlidir:
export https_proxy=http://user:password@proxy.example.com:9000
export http_proxy=http://user:password@proxy.example.com:9000
Burada sıklıkla sorun yaratan iki husus vardır.
Şifredeki özel karakterlerin yüzde kodlamasına tabi tutulması gerekir. Proxy URL’sinde bulunan @
veya :
gibi karakterler, dizgiyi yanlış yerde böler ve doğru kimlik bilgileri kullanıldığında kimlik doğrulama hatasına neden olur.
TLS'nin araya girmesi, sertifika doğrulamasını bozar. Kurumsal proxy'ler sıklıkla TLS'yi sonlandırır ve pip, sertifikanın kamuya açık bir otorite yerine kuruluşunuzun otoritesi tarafından verildiği için sertifikayı reddeder. Doğru çözüm, pip'i kuruluşunuzun CA paketine yönlendirmektir:
pip config set global.cert /path/to/corporate-ca.pem
--trusted-host pypi.org
komutu, o ana bilgisayar için doğrulamayı devre dışı bırakır ve cazip bir çözüm gibi görünebilir. Ancak bunu kullanmadan önce bunun ne anlama geldiğini iyi anlayın: Yürütülebilir kodu indirdiğiniz sunucu için sunulan herhangi bir sertifikayı kabul etmeyi seçmiş olursunuz.
conda için eşdeğer yapılandırma, .condarc
adresindeki proxy_servers
ve ssl_verify
dosyalarında bulunur.
Sık Sorulan Sorular
scikit-learn’i nasıl kurarım? Sanal ortam içinde `
`pip install -U scikit-learnkomutunu kullanın ya da conda ileconda create -n sklearn-env -c conda-forge scikit-learn`` komutunu çalıştırın. Belgelerde, diğer paketlerle çakışmaları önlemek için sanal ortam kullanılması şiddetle tavsiye edilmektedir.
pip ile sklearn yüklemesi neden başarısız oluyor?
Çünkü sklearn, paket adı değil, içe aktarma adıdır. PyPI'da, tek amacı hata verip sizi başka bir yere yönlendirmek olan bir yer tutucu paket bulunmaktadır — bu paketin bakımını yapanlar, kötü niyetli kişilerin bu isim altında yayın yapmasını önlemek için bilerek kafa karıştırıcı bir isim seçtiklerini belirtmişlerdir. Bunun yerine scikit-learn adresinden yükleyin.
sklearn ile scikit-learn arasındaki fark nedir?
scikit-learn, pip ve conda ile kullanılan proje ve paket adıdır; sklearn ise import ifadelerinde kullandığınız addır. Bu asimetri kalıcıdır ve yer tutucu paketin var olmasının nedeni budur.
scikit-learn hangi Python sürümünü gerektirir?
Haziran 2026’da yayınlanan 1.9.0 sürümü, Python 3.11 veya daha yeni bir sürümü gerektirir. Daha eski scikit-learn sürümleri, daha eski Python sürümlerini destekler ve pip, hata vermek yerine uyumlu bir sürüme yönlendirir — bu da bazen okuduğunuz bir özelliğin eksik olmasının nedenidir.
Yüklemeden sonra neden ModuleNotFoundError hatası alıyorum?
Neredeyse her zaman yanlış ortamdan kaynaklanır. import sys; print(sys.executable) adresini kontrol edin ve yüklediğiniz yerle karşılaştırın. Jupyter’da, çekirdeğin ortamı terminalinizinkinden ayrıdır — çekirdeğe yüklemek için not defteri içinde %pip install scikit-learn komutunu kullanın.
pip mi yoksa conda mı kullanmalıyım?
Çoğu projeye uygun olan ve önceden derlenmiş wheel dosyalarını saniyeler içinde yükleyen pip'i sıradan bir sanal ortamda kullanın. Zaten bir conda ortamındaysanız veya belirli derlenmiş sayısal kütüphanelere ihtiyacınız varsa conda'yı kullanın. İki paket yöneticisinin ortama bakış açıları farklı olacağından, bunları tek bir ortamda karıştırmaktan kaçının.
Hangi scikit-learn sürümüne sahip olduğumu nasıl kontrol edebilirim?
Sürüm ve yükleme konumunu öğrenmek için python -m pip show scikit-learn komutunu, Python ve sayısal yığını da içeren tam bir rapor için ise python -c "import sklearn; sklearn.show_versions()" komutunu kullanın — bir sorun bildirirken bu raporu eklemeniz gerekir.
Proxy arkasında scikit-learn'i nasıl yüklerim?
pip install --proxy http://user:pass@host:port scikit-learn komutunu kullanın veya http_proxy ve https_proxy adreslerini ortamınızda ayarlayın; böylece conda ve diğer araçlar da bunları algılayabilir. Şifredeki özel karakterleri yüzde kodlayın ve doğrulamayı devre dışı bırakmak yerine kuruluşunuzun CA sertifikasını yapılandırın.
Sonuç
Yükleme işlemi tek bir komutla gerçekleştirilir. Bu konudaki zorlukların neredeyse tamamı, scikit-learn’in kendi koduyla hiçbir ilgisi olmayan iki unsurdan kaynaklanmaktadır.
Birincisi, isimdir. Yüklemek için scikit-learn, içe aktarmak için sklearn komutları kullanılır; ayrıca, kafa karıştırıcı isim üzerinde yer alan bir yer tutucu paket, sizi durdurup bunun nedenini açıklar. Bu yer tutucu, tedarik zinciri hijyeninin küçük bir parçasıdır ve ürettiği hata işini yapmaktadır.
İkincisi ise ortamlardır. Yeni bir terminalde ortadan kaybolan modül, az önce yüklediğiniz şeyi bulamayan notebook, alakasız bir güncellemeden sonra ortaya çıkan içe aktarma hatası gibi pek çok hata, farklı kılıklara bürünmüş tek bir ortam sorunudur. Proje başına kasıtlı olarak etkinleştirilen bir sanal ortam, bunların neredeyse tamamını önler ve print(sys.executable) komutu geri kalanları tek satırda teşhis eder.
pip komutu hata vermek yerine donarsa, Python'dan önce ağınıza bakın. Pip'in tanımadığı zorunlu bir proxy, hata yerine zaman aşımı hatası üretir; bu da kendi altyapınız hakkında bilgi edinmenin kafa karıştırıcı bir yoludur.
