Ubuntu’ya Python 3.12 Kurulumu ve Güncelleme
Python ekosistemi hızla gelişmeye devam ediyor ve her yeni sürüm beraberinde ciddi performans iyileştirmeleri, yeni özellikler ve güvenlik yamaları getiriyor. Python 3.12, özellikle hata mesajlarının okunabilirliği, performans artışları ve tip sistemi geliştirmeleri açısından önemli bir adım. Ancak Ubuntu’nun varsayılan paket depolarında her zaman en güncel Python sürümünü bulamıyorsunuz. Bu yazıda Ubuntu sistemine Python 3.12’yi nasıl kuracağınızı, mevcut kurulumla nasıl birlikte çalıştıracağınızı ve sanal ortam yönetimini nasıl yapacağınızı adım adım ele alacağız.
Neden Python 3.12?
Ubuntu 22.04 LTS, varsayılan olarak Python 3.10 ile geliyor. Ubuntu 23.10 ve sonrası 3.11’i sunuyor. Ama özellikle yeni bir proje başlatıyorsanız ya da belirli bir kütüphane Python 3.12 gerektiriyorsa, sisteminizi buna göre yapılandırmanız gerekiyor.
Python 3.12 ile gelen öne çıkan yenilikler şunlar:
- f-string geliştirmeleri: Artık f-string içinde çok daha karmaşık ifadeler kullanabiliyorsunuz
- Daha iyi hata mesajları: Hata mesajları artık sorunun tam olarak nerede olduğunu çok daha net gösteriyor
- %12 performans artışı: CPython tarafında yapılan optimizasyonlar sayesinde genel performansta kayda değer iyileşme var
- Yeni tip sistemi özellikleri:
@overridedekoratörü veTypeVargeliştirmeleri sys.monitoringAPI: Daha verimli profiling ve debugging imkanı
Bunların yanı sıra, bazı eski ve deprecated olan özellikler kaldırıldı. Yani mevcut kodunuzu 3.12’ye taşıyorsanız, küçük uyumluluk sorunlarıyla karşılaşabilirsiniz. Ama yeni projeler için Python 3.12 kesinlikle iyi bir başlangıç noktası.
Kurulumdan Önce Mevcut Durumu Kontrol Edin
Sisteminizde Python’ın hangi sürümlerinin kurulu olduğunu görmek için önce bir kontrol yapalım:
python3 --version
python3 -V
which python3
ls /usr/bin/python*
Bu komutlar mevcut Python sürümünü ve kurulu olan tüm Python binary’lerini listelemenizi sağlar. Genellikle Ubuntu’da python3.10 veya python3.11 şeklinde sürüme özgü binary’ler /usr/bin/ altında bulunur.
Sisteminizde hangi Python paketlerinin kurulu olduğunu görmek isterseniz:
dpkg -l | grep python3
apt list --installed 2>/dev/null | grep python
Bu adım önemli çünkü sisteminizin bazı kritik bileşenleri (apt, update-manager, vb.) mevcut Python sürümüne bağımlı. Bu yüzden varsayılan python3 sembolik bağlantısını değiştirirken dikkatli olmanız gerekiyor.
Yöntem 1: Deadsnakes PPA ile Kurulum (Önerilen)
En pratik ve güvenilir yöntem, deadsnakes PPA’sını kullanmak. Bu PPA, Ubuntu ekibinde görev yapmış geliştiriciler tarafından yönetiliyor ve güncel Python sürümlerini Ubuntu için derlenmiş olarak sunuyor.
PPA’yı Sisteme Ekleyin
sudo apt update
sudo apt install software-properties-common -y
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
software-properties-common paketi, PPA ekleme işlemini kolaylaştıran add-apt-repository komutunu sağlıyor. PPA eklendikten sonra mutlaka apt update çalıştırın, aksi takdirde yeni paket listesi yüklenmez.
Python 3.12’yi Kurun
sudo apt install python3.12 python3.12-venv python3.12-dev -y
Burada üç paketi birlikte kuruyoruz:
- python3.12: Ana Python interpreter’ı
- python3.12-venv: Sanal ortam oluşturmak için gerekli modül
- python3.12-dev: C uzantıları geliştirmek veya bazı pip paketlerini derlemek için gerekli başlık dosyaları
Eğer pip kullanacaksanız şunu da ekleyin:
sudo apt install python3.12-distutils -y
curl -sS https://bootstrap.pypa.io/get-pip.py | sudo python3.12
Kurulumun başarılı olduğunu doğrulamak için:
python3.12 --version
# Çıktı: Python 3.12.x
Yöntem 2: Kaynak Koddan Derleme
Bu yöntem daha fazla kontrol sağlar ama zaman alır. Özellikle özelleştirilmiş optimizasyon bayrakları kullanmak istiyorsanız ya da belirli bir production ortamı için hassas kontrol gerekiyorsa bu yola başvurabilirsiniz.
Bağımlılıkları Kurun
sudo apt update
sudo apt install -y build-essential zlib1g-dev libncurses5-dev
libgdbm-dev libnss3-dev libssl-dev libreadline-dev
libffi-dev libsqlite3-dev wget libbz2-dev
liblzma-dev uuid-dev tk-dev
Kaynak Kodu İndirin ve Derleyin
cd /opt
sudo wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz
sudo tar -xzf Python-3.12.3.tgz
cd Python-3.12.3
sudo ./configure --enable-optimizations --with-ensurepip=install
sudo make -j$(nproc)
sudo make altinstall
--enable-optimizations bayrağı, PGO (Profile Guided Optimization) derlemesini etkinleştirir. Bu sayede %10-15 daha hızlı bir interpreter elde edersiniz ama derleme süresi uzar.
make altinstall kullandığımıza dikkat edin, make install değil. altinstall, python3 veya python sembolik bağlantılarını değiştirmez, yalnızca python3.12 olarak sisteme ekler. Bu sayede mevcut sistem Python’u korunmuş olur.
Derleme tamamlandıktan sonra:
/usr/local/bin/python3.12 --version
update-alternatives ile Sürüm Yönetimi
Birden fazla Python sürümü kurulu olduğunda hangisinin varsayılan olarak kullanılacağını update-alternatives ile yönetebilirsiniz. Ancak burada çok dikkatli olmak lazım.
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 2
Şu anda hangi sürümün aktif olduğunu görmek ve değiştirmek için:
sudo update-alternatives --config python3
Bu komut size interaktif bir menü gösterir. Bir numara girerek istediğiniz sürümü seçebilirsiniz.
Önemli uyarı: Ubuntu’nun sistem araçları (özellikle apt ve gnome-terminal gibi uygulamalar) sistem Python’una bağımlıdır. python3 sembolik bağlantısını değiştirirseniz bazı sistem araçları kırılabilir. Genel tavsiyem, sistem genelinde değişiklik yapmak yerine sanal ortamları kullanmak.
Sanal Ortam Oluşturma ve Yönetimi
Profesyonel Python geliştirmenin temel taşı sanal ortamlardır. Her proje için bağımsız bir Python ortamı oluşturmak, bağımlılık çakışmalarını önlemenin en iyi yoludur.
Python 3.12 ile Sanal Ortam Oluşturun
# Proje dizini oluşturun
mkdir ~/projects/myapp
cd ~/projects/myapp
# Python 3.12 ile sanal ortam oluşturun
python3.12 -m venv .venv
# Sanal ortamı aktif edin
source .venv/bin/activate
# Aktif ortamı doğrulayın
python --version
which python
pip --version
Sanal ortam aktifleştirildikten sonra python komutu doğrudan Python 3.12’yi işaret eder. Bu durum yalnızca aktif terminal oturumu için geçerlidir.
pip’i Güncel Tutun
# Sanal ortam aktifken
pip install --upgrade pip setuptools wheel
Her yeni sanal ortamda bunu yapmayı alışkanlık edinmenizi öneririm. Eski pip sürümleri bazı modern paketleri kurarken sorun çıkarabiliyor.
Gerçek Dünya Senaryosu: Django Projesi Kurulumu
Diyelim ki Python 3.12 üzerinde yeni bir Django projesi başlatıyorsunuz:
# Proje dizini ve sanal ortam
mkdir ~/projects/django_app
cd ~/projects/django_app
python3.12 -m venv .venv
source .venv/bin/activate
# Django ve temel bağımlılıkları kur
pip install django==5.0 djangorestframework psycopg2-binary
# Kurulu paketleri requirements.txt'e aktar
pip freeze > requirements.txt
# Yeni Django projesi oluştur
django-admin startproject config .
# Sunucuyu başlat
python manage.py runserver
requirements.txt dosyası, projenizin başka bir ortamda veya sunucuda kurulabilmesi için kritik önem taşır. Her yeni bağımlılık ekledikten sonra pip freeze > requirements.txt çalıştırın.
Başka bir ortamda aynı bağımlılıkları kurmak için:
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pyenv ile Gelişmiş Sürüm Yönetimi
Birden fazla Python sürümüyle çalışıyorsanız ve her proje için farklı sürüm gereksinimi varsa, pyenv bu işi çok kolaylaştırıyor. Özellikle geliştirme makinelerinde pyenv + virtualenv kombinasyonu altın standart haline geldi.
# pyenv kurulumu
curl https://pyenv.run | bash
# Shell konfigürasyonuna ekleyin (~/.bashrc veya ~/.zshrc)
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# Değişiklikleri uygulayın
source ~/.bashrc
# Python 3.12 kurulumu
pyenv install 3.12.3
# Belirli bir proje için Python sürümü belirleyin
cd ~/projects/myapp
pyenv local 3.12.3
# Global Python sürümünü ayarlayın (sistem geneli değil, kullanıcı bazlı)
pyenv global 3.12.3
# Mevcut sürümleri listeleyin
pyenv versions
pyenv local komutu, proje dizinine .python-version adlı bir dosya oluşturur. Bu dizine girdiğinizde pyenv otomatik olarak doğru Python sürümüne geçiş yapar. Bu özellik ekip çalışmasında da son derece kullanışlı, çünkü .python-version dosyasını git reposuna dahil edebilirsiniz.
Sistemin Python’unu Koruma Stratejisi
Ubuntu sistem araçlarının kırılmaması için şu kurallara uymak gerekiyor:
- Sistem Python’una (
/usr/bin/python3) asla doğrudan pip ile paket kurmayın sudo pip installkomutunu hiçbir zaman çalıştırmayın- Sistem genelinde paket kurmak gerekiyorsa
aptüzerinden yapın - Her proje için ayrı sanal ortam kullanın
pip ile sistem genelinde paket kurma girişiminde bulunduğunuzda Python 3.12 sizi uyarır:
error: externally-managed-environment
Bu hata mesajı aslında bir hata değil, bir güvenlik önlemi. Sistem Python’unun bütünlüğünü koruyor. Bu uyarıyı --break-system-packages bayrağıyla geçersiz kılabilirsiniz ama bunu yapmanızı kesinlikle önermiyorum.
Python 3.12 ile Bazı Uyumluluk Notları
Python 3.12’ye geçerken dikkat etmeniz gereken bazı noktalar var.
Kaldırılan özellikler ve değişiklikler:
distutilsmodülü tamamen kaldırıldı:setuptoolskullanımına geçinasynchatveasyncoremodülleri kaldırıldı:asynciokullanınimghdr,sndhdr,sunaumodülleri kaldırıldı: Alternatif kütüphanelere bakınpkgutil.find_loader()deprecated:importlib.util.find_spec()kullanın
Mevcut bir projeyi Python 3.12’ye taşıyorsanız, önce pip install pyupgrade ile kodu otomatik güncelleyebilir, ardından pip install pylint veya mypy ile olası sorunları tespit edebilirsiniz.
# Sanal ortamda uyumluluk kontrol araçları
pip install pyupgrade mypy pylint
# Proje dizinindeki Python dosyalarını kontrol et
mypy src/
pylint src/
Jupyter Notebook ile Python 3.12
Veri bilimi veya araştırma yapıyorsanız Jupyter Notebook’u Python 3.12 kernel’iyle kullanmak isteyebilirsiniz:
# Sanal ortam oluştur
python3.12 -m venv ~/venvs/datascience
source ~/venvs/datascience/bin/activate
# Jupyter ve temel veri bilimi paketlerini kur
pip install jupyter numpy pandas matplotlib scikit-learn
# Kernel'i Jupyter'a kaydet
python -m ipykernel install --user --name=python312 --display-name="Python 3.12"
# Jupyter'ı başlat
jupyter notebook
Bu işlemden sonra Jupyter arayüzünde yeni bir notebook oluştururken “Python 3.12” seçeneğini göreceksiniz. Böylece farklı projeler için farklı Python sürümlerini aynı Jupyter kurulumundan kullanabilirsiniz.
Otomatik Sanal Ortam Aktivasyonu
Bir proje dizinine girdiğinizde sanal ortamın otomatik aktif olmasını istiyorsanız .bashrc veya .zshrc dosyanıza şu fonksiyonu ekleyebilirsiniz:
# ~/.bashrc sonuna ekleyin
auto_activate_venv() {
if [ -f ".venv/bin/activate" ]; then
source .venv/bin/activate
fi
}
cd() {
builtin cd "$@"
auto_activate_venv
}
Bu fonksiyon, cd komutunu override ederek her dizin değişikliğinde .venv klasörü olup olmadığını kontrol eder. Varsa otomatik olarak aktif eder. Basit ama iş hayatında ciddi zaman kazandıran bir konfigürasyon.
Sonuç
Ubuntu’da Python 3.12 kurulumu ve yönetimi aslında göründüğünden çok daha az karmaşık. Önemli olan doğru araçları doğru amaçlar için kullanmak. Günlük geliştirme için deadsnakes PPA üzerinden kurulum ve sanal ortam kombinasyonu çoğu durumda yeterli. Birden fazla sürümle yoğun çalışıyorsanız pyenv’i sisteminize entegre etmek uzun vadede büyük kolaylık sağlıyor.
En kritik kural şu: sistem Python’una dokunmayın. Ubuntu’nun temel araçları bu Python’a bağımlı ve bir kere kırıldığında düzeltmek ciddi vakit kaybına yol açıyor. Her proje için izole bir sanal ortam oluşturma alışkanlığı edinin, requirements.txt dosyalarını güncel tutun ve sürüm geçişlerinde uyumluluk kontrollerini ihmal etmeyin. Bu üç kurala uyduğunuzda Python sürüm yönetimi hiçbir zaman baş ağrısı olmaktan çıkıyor.
