Bir .pyc (derlenmiş python) dosyası nasıl çalıştırılır?


18

Bir python dosyası derlediğimde, * .pyc dosyası alıyorum. Bunu çalıştırmaya çalıştığımda, onları çalıştırmak için program olmadığını belirten bir mesaj alıyorum. Bu seçenekle çevrimiçi bir program aradığımda, hiç yok diyor. Herkes orada dosyaları çalıştırmak bana yardımcı olabilir?

Yanıtlar:


24

Python dosyanız bayt olarak derlendiğinden, dosyayı python yorumlayıcısıyla çalıştırmanız gerekir

python yourfile.pyc

.Py dosyalarınızı doğrudan çalıştırabilmenizin nedeni,

#!/usr/bin/python

veya

#!/usr/bin/env python

veya .py dosyalarındaki ilk satırda benzer bir şey. Bu, kabuğunuza dosyanın geri kalanını python yorumlayıcısıyla yürütmesini söyler.


3
Bu yanıtı tamamlamak için: .pyc dosyası, yerel makine kodu olmadığı için terimin en katı anlamında derlenmemiştir . @Tomdachi'nin yazdığı gibi, python'a özgü bayt kodu (Java .class'a çok benzer), bu yüzden yine de ortaya çıkarmak için python yorumlayıcısına ihtiyacı var.
Pierre-Antoine

aslında, pyc yalnızca py dosyasını içe aktardığınızda oluşturuldu. bu yüzden pyc dosyasını çalıştırmak işe yaramaz!
一个 at 癌 并且 卓越 的 来 陆家嘴 搞 金融 显然 是 为了 哈哈哈

2

Derlenmiş .pyc python3 dosyalarını derlemek için, uncompyle6şu anki Ubuntu işletim sistemimde şu şekilde kullandım:

  1. Uncompyle6 kurulumu:

    pip3 install uncompyle6
  2. .Pyc dosyasından bir .py dosyası oluşturmak için Çalıştır:

    uncompyle6 -o . your_filename.pyc
  3. Otomatik olarak mevcut .pyc dosya adıyla yeni bir .py dosyası oluşturulur.


-1

Python .py dosyalarını derler ve .pyc dosyaları olarak kaydeder, böylece sonraki çağrılarda bunlara başvurabilir. .Pyc, Python yorumlayıcısının kaynağı derlediği Python kaynak dosyalarının derlenmiş bayt kodunu içerir. Bu kod daha sonra Python'un sanal makinesi tarafından yürütülür. Onları silmenin bir zararı yoktur (.pyc), ancak çok fazla işlem yapıyorsanız derleme zamanından tasarruf edecektir.

Python, derlenmiş dilin aksine yorumlanmış bir dildir, ancak bytecode derleyicisinin varlığı nedeniyle ayrım bulanık olabilir. Derleme genellikle en hızlı çalışan makine koduna dönüştürmek anlamına gelir. Ancak tercümanlar okunabilir metinler alır ve uygularlar. Bunu bir ara aşama ile yapabilirler.

Örneğin, myprog.py kaynak dosyasını çalıştırdığınızda, python yorumlayıcısı önce myprog.pycvarsa (bayt kodu derlenmiş sürümü olan myprog.py) ve daha yeni veya daha yeni olup olmadığına bakar myprog.py. Eğer öyleyse, tercüman çalıştırır. Onun var ya değilse myprog.py, ilk derler tercüman (kaynak dosyası değişti anlamında) o daha yenidir myprog.pyiçin myprog.pyc.

Yukarıdaki örneğin bir istisnası vardır. #! /usr/bin/env pythonİlk satırını koyarsanız , myprog.pyçalıştırılabilir yapın ve sonra myprog.pykendi kendine çalıştırın .


1
Ubuntu'ya Sor hoş geldiniz ! Bu, pycdosyaların neden var olduğuna dair güzel bir açıklama ancak bunları nasıl çalıştıracağınız sorusuna cevap vermediniz. Bir cevap değil, çok geniş bir yorum olarak nitelendirilebilir . Gerçek bir cevap eklemek için lütfen yayınınızı düzenleyin .
Melebius
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.