Làm cách nào để chạy tệp .pyc (biên dịch python)?


18

Khi tôi biên dịch tệp python, tôi nhận được tệp * .pyc. Khi tôi cố chạy nó, tôi nhận được một thông báo nói rằng không có chương trình nào để chạy chúng. Khi tôi tìm kiếm một chương trình trực tuyến thông qua tùy chọn đó, nó báo là không có. Bất cứ ai có thể giúp tôi chạy tập tin ở đó?

Câu trả lời:


24

Vì tệp python của bạn được biên dịch byte, bạn cần chạy nó thông qua trình thông dịch python

python yourfile.pyc

Lý do bạn có thể chạy các tệp .py của mình trực tiếp là vì bạn có dòng

#!/usr/bin/python

hoặc là

#!/usr/bin/env python

hoặc một cái gì đó tương tự trên dòng đầu tiên trong các tệp .py. Điều này nói với shell của bạn để thực thi phần còn lại của tệp với trình thông dịch python.


3
Để bổ sung cho câu trả lời này: một tệp .pyc không được biên dịch theo nghĩa chặt chẽ nhất của thuật ngữ này, vì nó không phải là mã máy riêng. Như @tomdachi đã viết, mã byte dành riêng cho python (rất giống với Java. Class), đó là lý do tại sao nó vẫn cần trình thông dịch python để thực hiện.
Pierre-Antoine

thực tế, pyc chỉ được tạo khi bạn nhập tệp py. Vì vậy, nó là vô ích để chạy các tập tin pyc!
一个 患有 癌 并且 陆家嘴 搞 金融 为了

2

Để dịch ngược các tệp .pyc python3 đã biên dịch, tôi đã sử dụng uncompyle6trong hệ điều hành Ubuntu hiện tại của mình như sau:

  1. Cài đặt unompyle6:

    pip3 install uncompyle6
  2. Để tạo tệp .py từ tệp .pyc Chạy:

    uncompyle6 -o . your_filename.pyc
  3. Tự động một tệp .py mới sẽ được tạo với cùng tên tệp .pyc hiện có.


-1

Python biên dịch các tệp .py và lưu nó dưới dạng các tệp .pyc để nó có thể tham chiếu chúng trong các lần gọi tiếp theo. .Pyc chứa mã byte được biên dịch của các tệp nguồn Python, đây là những gì trình thông dịch Python biên dịch nguồn thành. Mã này sau đó được thực thi bởi máy ảo của Python. Không có hại trong việc xóa chúng (.pyc), nhưng chúng sẽ tiết kiệm thời gian biên dịch nếu bạn đang xử lý nhiều.

Python là một ngôn ngữ được giải thích, trái ngược với ngôn ngữ được biên dịch, mặc dù sự khác biệt có thể bị mờ vì sự hiện diện của trình biên dịch mã byte. Biên dịch thường có nghĩa là chuyển đổi sang mã máy là thứ chạy nhanh nhất. Nhưng thông dịch viên lấy văn bản có thể đọc được của con người và thực hiện nó. Họ có thể làm điều này với một giai đoạn trung gian.

Ví dụ: Khi bạn chạy tệp nguồn myprog.py, trình thông dịch python trước tiên sẽ xem có myprog.pyctồn tại không (đó là phiên bản được biên dịch mã byte myprog.py) và nếu nó là gần đây hoặc gần đây hơn myprog.py. Nếu vậy, thông dịch viên chạy nó. Nếu nó không tồn tại hoặc myprog.pygần đây hơn nó (có nghĩa là bạn đã thay đổi tệp nguồn), trước tiên trình thông dịch myprog.pysẽ biên dịch thành myprog.pyc.

Có một ngoại lệ cho ví dụ trên. Nếu bạn đặt #! /usr/bin/env pythondòng đầu tiên myprog.py, làm cho nó có thể thực thi được, và sau đó tự chạy myprog.py.


1
Chào mừng bạn đến hỏi Ubuntu ! Đây là một lời giải thích hay về lý do tại sao pyccác tệp tồn tại nhưng bạn chưa trả lời câu hỏi làm thế nào để chạy chúng. Nó có thể được coi là một nhận xét rất mở rộng, không phải là một câu trả lời . Vui lòng chỉnh sửa bài viết của bạn để thêm một câu trả lời thực tế.
Melebius
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.