Python dosya uzantıları, .pyc .pyd .pyo ne anlama geliyor?


436

Bu python dosya uzantıları ne anlama geliyor?

  • .pyc
  • .pyd
  • .pyo

Aralarındaki farklar nelerdir ve * .py dosyasından nasıl oluşturulur?

Yanıtlar:


481
  1. .py: Bu normalde yazdığınız giriş kaynak kodudur.
  2. .pyc: Bu derlenmiş bayt kodudur. Bir modülü içe aktarırsanız, python *.pycdaha sonra daha kolay (ve daha hızlı) içe aktarmak için bayt kodunu içeren bir dosya oluşturur.
  3. .pyo: Bu, *.pycoptimizasyon ( -O) bayrağıyla oluşturulan dosyalar için Python 3.5'ten önce kullanılan bir dosya biçimiydi. (aşağıdaki nota bakın)
  4. .pyd: Bu temelde bir windows dll dosyasıdır. http://docs.python.org/faq/windows.html#is-a-pyd-file-the-same-as-a-dll

Ayrıca .pycvs hakkında daha fazla tartışma için .pyo, http://www.network-theory.co.uk/docs/pytut/CompiledPythonfiles.html (Aşağıdaki önemli kısmı kopyaladım)

  • Python yorumlayıcısı -O bayrağıyla çağrıldığında, optimize edilmiş kod oluşturulur ve '.pyo' dosyalarında saklanır. Optimize edici şu anda pek yardımcı olmuyor; yalnızca onay ifadelerini kaldırır. -O kullanıldığında, tüm bayt kodu optimize edilir; .pyc dosyaları yok sayılır ve .py dosyaları optimize edilmiş bayt koduna göre derlenir.
  • Python yorumlayıcısına (-OO) iki -O bayrağını iletmek, bayt kodu derleyicisinin bazı nadir durumlarda hatalı programlarla sonuçlanabilecek optimizasyonlar yapmasına neden olur. Şu anda __doc__bayt kodundan yalnızca dizeler kaldırılarak daha kompakt '.pyo' dosyaları elde edilmektedir. Bazı programlar bunların mevcut olmasına güvenebileceğinden, bu seçeneği yalnızca ne yaptığınızı biliyorsanız kullanmalısınız.
  • Bir program '.pyc' veya '.pyo' dosyasından okunduğunda '.py' dosyasından okunduğundan daha hızlı çalışmaz; '.pyc' veya '.pyo' dosyaları hakkında daha hızlı olan tek şey, yüklenme hızıdır.
  • Bir komut dosyası, komut satırında adı verilerek çalıştırıldığında, komut dosyasının bayt kodu hiçbir zaman bir '.pyc' veya '.pyo' dosyasına yazılmaz. Böylece, bir komut dosyasının başlama zamanı, kodunun çoğunu bir modüle taşıyarak ve o modülü içe aktaran küçük bir önyükleme komut dosyasına sahip olarak azaltılabilir. Bir '.pyc' veya '.pyo' dosyasını doğrudan komut satırında adlandırmak da mümkündür.

Not:

2015-09-15'te Python 3.5 sürümü PEP-488'i uyguladı ve .pyodosyaları eledi . Bu, .pycdosyaların hem optimize edilmemiş hem de optimize edilmiş bayt kodunu temsil ettiği anlamına gelir .


2
Dll dosyaları python komut dosyalarından mı yoksa c / c ++ komut dosyalarından mı oluşturuluyor?
Yanki Twizzy

1
@yankitwizzy: Evet. C / C ++ kodundan oluşturulmalıdır. Dosya makine kodunda olmalıdır, bu yüzden doğrudan python'dan olamaz.
Bill Lynch

"Optimizer şu anda pek yardımcı olmuyor; yalnızca iddia ifadelerini kaldırıyor." Bundan emin misin? Denedef f(x): assert(x**5 == x*x*x*x*x); return x; import timeit; print(timeit.repeat("for x in range(100): f(x)", "from __main__ import f", number=10000));
Jorge Leitao

@ JCLeitão: Ne olduğundan emin miyim? Bir yorumda yalnızca kod atmak yerine örneğinizin ne gösterdiğini düşündüğünüzü açıklar mısınız?
Bill Lynch

9
O Not Python 3.5 , KEP 488 kavramının ortadan kaldıran uygulanmaktadır, .pyodosyalar. Optimize edilmiş bayt kodu bile .pycPython 3.5 uzantısı ile biter .
Michael Currie

228
  • .py - Normal komut dosyası
  • .py3 - (nadiren kullanılır) Python3 betiği. Python3 betikleri genellikle ".py" değil ".py3" ile biter, ancak bunu birkaç kez gördüm
  • .pyc - derlenmiş komut dosyası (Bytecode)
  • .pyo - optimize edilmiş pyc dosyası (Python3.5'ten itibaren Python, pyo ve pyc yerine yalnızca pyc kullanır)
  • .pyw - Konsolsuz Pencereli modda çalışacak Python betiği; pythonw.exe ile yürütüldü
  • .pyx - Cython src, C / C ++ 'ya dönüştürülecek
  • .pyd - Windows DLL olarak yapılan Python betiği
  • .pxd - C / C ++ üstbilgisine eşdeğer Cython betiği
  • .pxi - MyPy saplaması
  • .pyi - Saplama dosyası ( PEP 484 )
  • .pyz - Python kod arşivi ( PEP 441 ); bu, standart Python komut dosyası üstbilgisinden sonra ikili biçimde sıkıştırılmış Python komut dosyaları (ZIP) içeren bir komut dosyasıdır
  • .pywz - MS-Windows için Python komut dosyası arşivi ( PEP 441 ); bu, standart Python komut dosyası üstbilgisinden sonra ikili biçimde sıkıştırılmış Python komut dosyaları (ZIP) içeren bir komut dosyasıdır
  • .py [cod] - ".gitignore" içindeki joker karakter notasyonu, dosyanın ".pyc", ".pyo" veya ".pyd" olabileceği anlamına gelir.
  • .pth - bir yol yapılandırma dosyası; içeriği eklenecek ek öğelerdir (her satıra bir tane) sys.path. Bkz. siteModül.

Ek Python dosya uzantılarının daha büyük bir listesini (çoğunlukla nadir ve gayri resmi) http://dcjtech.info/topic/python-file-extensions/ adresinde bulabilirsiniz.


11
Bir «.pyx» dosyasının C'ye dönüştürülen oldukça Python kaynağı değil, Cython kaynak kodunun (yani: C'ye dönüştürülmeyi bekleyen) olduğu belirtilmelidir
Fred Osterrath

PYI uzantısında "I" neyi temsil eder? "Dahil et" / "Uygulama" / "Arayüz"?
ChrisFreeman

1
.pyw, Python 4 Windows değil, bir Pencere oluşturan PYthon betiği anlamına gelir. .pyw * nix
Kotauskas

1
Genel olarak .pyw, Pencereli modda, yani konsol çıktısı olmadan çalıştırılacak bir komut dosyasıdır. @VladislavToncharov'un belirttiği gibi, yüklü oldukları takdirde python'u destekleyen çoğu platformda çalıştırılabilirler .
Steve Barnes

1
Bu cevap .pthdosyaları tartışmalıdır .
wim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.