Hướng dẫn how to import pyc file in python - cách nhập tệp pyc trong python

Tóm lại, để nhập tệp được biên dịch python (ví dụ: mô -đun.pyc), chỉ cần đặt nó vào cùng một thư mục trong đó nguồn (ví dụ: mô -đun) sẽ có và đảm bảo rằng không có tệp nguồn tương ứng (mô -đun.py.py trong ví dụ của chúng tôi) ở đó. Sau đó,

MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
0 thông thường sẽ hoạt động liền mạch.no corresponding source file (module.py in our example) there. Then the usual
MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
0 will work seamlessly.

Nếu có một tệp nguồn trong cùng một thư mục với tệp được biên dịch, thay vào đó, Python sẽ sử dụng tệp được biên dịch trong thư mục

MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
1 hoặc biên dịch lại từ nguồn nếu không có.

Nếu bạn xóa tệp nguồn mà không đặt ".pyc" vào cùng một thư mục, việc nhập sẽ không thành công ngay cả khi tệp được biên dịch tồn tại trong thư mục

MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
1. Cũng lưu ý rằng các tệp theo
MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
1 tuân theo một quy ước đặt tên khác. Nếu bạn sao chép chúng qua, hãy đảm bảo rằng chúng được đổi tên để nó có cùng tên với tệp nguồn, ngoại trừ phần mở rộng phải là "PYC" thay vì "PY".

Có một biểu đồ dòng chảy rất đẹp trong PEP 3147 được liên kết từ tài liệu.

Giống như nhập nó từ một tệp .py.

Lưu ý rằng các tệp .pyc rất cụ thể đối với HĐH, phiên bản Python, kiến ​​trúc, v.v., vì vậy nói chung bạn không thể chuyển chúng sang một hệ thống khác.


Nếu bạn có nhiều câu hỏi như thế này, tốt hơn là đăng chúng trên R/LearnPython. Hãy chắc chắn định dạng mã của bạn cho Reddit hoặc sử dụng một trang web như Pastebin. Ngoài ra, bao gồm phiên bản Python và hệ điều hành nào bạn đang sử dụng.

Khi tệp nguồn Python (mô -đun) được nhập trong quá trình thực hiện lần đầu tiên, tệp .pyc thích hợp sẽ được tạo tự động. Nếu cùng một mô -đun được nhập lại, thì tệp .pyc đã được tạo. Điều đó có nghĩa là chưa có tệp .pyc cho các tệp nguồn chưa được thực thi (nhập). Việc tạo các tệp .pyc được thực hiện hoàn toàn thông qua API hệ thống tập tin, để các trình nhúng có thể quản lý truy cập hệ thống tệp. Nếu không có tệp .pyc phù hợp cho một nguồn, thì nguồn được phân tích cú pháp với ANTLR. Nếu logic nhập tiêu chuẩn Python tìm thấy một tệp .pyc thích hợp, nó sẽ chỉ kích hoạt quá trình giải phóng SST và Cây phạm vi từ nó. Nguồn ban đầu vẫn có thể được phục hồi. Ngay cả khi nguồn bị bỏ qua, cây cú pháp chứa đủ thông tin để phân tách thành mã nguồn một cách dễ dàng.

Cấu trúc thư mục được tạo cho các tệp

MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
4 trông như thế này:

top_folder
__pycache__
sourceA.graalpython.pyc
sourceB.graalpython.pyc
sourceA.py
sourceB.py
sub_folder
__pycache__
sourceX.graalpython.pyc
sourceX.py

Việc triển khai hiện tại cũng bao gồm một bản sao của văn bản nguồn gốc trong tệp

MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
4. Đây là một tối ưu hóa hiệu suất nhỏ để bạn có thể tạo một đối tượng
MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
6 với đường dẫn đến tệp nguồn gốc, nhưng bạn không cần phải đọc tệp
MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
7 gốc, tăng tốc quá trình có được cây thực hiện ngôn ngữ (chỉ một tệp là một tệp là đọc). Cấu trúc của tệp
MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
8 là:

MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree

Cây SST và phạm vi được nối tiếp được lưu trữ trong một đối tượng Python

MAGIC_NUMBER
source text
binary data - scope tree
binary data - simple syntax tree
9, vì nội dung của thuộc tính
>>> def add(x, y):
   ...
   return x + y
      ...
      >>>
      add.__code__.co_code
b '\x01\x00\x00\x02[]K\xbf\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 ...'
0 (chứa mã byte trên CPython). Ví dụ:

>>> def add(x, y):
   ...
   return x + y
      ...
      >>>
      add.__code__.co_code
b '\x01\x00\x00\x02[]K\xbf\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00 ...'


Gợi ý: 2

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 yêu cầu tiếp theo. The .pyc contain the compiled bytecode of Python source files, which is what the Python interpreter compiles the source to. Mã này sau đó được thực thi bởi máy ảo của Python. Không có hại gì 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 thực hiện nhiều xử lý., 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 bảo Shell của bạn thực thi tệp với trình thông dịch Python., Khi tôi biên dịch tệp Python, tôi nhận được tệp *.pyc. Khi tôi cố gắng chạy nó, tôi nhận được một tin nhắn nói rằng không có chương trình để 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ó nói rằng không có. Bất cứ ai có thể giúp tôi chạy các tệp đó không ?, 3 để bổ sung cho câu trả lời này: tệp .pyc không được biên dịch theo nghĩa nghiêm ngặt nhất của thuật ngữ, vì nó không phải là mã máy gốc. Đó là, 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 thông dịch viên Python để thoát ra. -& NBSP; Pierre-Antoine ngày 27 tháng 10 năm 2017 lúc 6:29

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

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

Cài đặt uncompyle6:

Để tạo tệp .py từ .pyc Run:

uncompyle6 - o.your_filename.pyc


Gợi ý: 3

Dưới đây là một mô -đun Python ví dụ mà chúng tôi muốn nhập. Mô -đun này tính toán giai thừa.

# math_helpers.py

# a
function that computes the nth factorial, e.g.factorial(2)
def factorial(n):
   if n == 0:
   return 1
else :
   return n * factorial(n - 1)

# a main
function that uses our factorial
function defined above
def main():
   print("I am the factorial helper")
print("you can call factorial(number) where number is any integer")
print("for example, calling factorial(5) gives the result:")
print(factorial(5))

# this runs when the script is called from the command line
if __name__ == '__main__':
   main()

Bây giờ chúng ta hãy nhập nó vào một mô -đun khác, như được hiển thị bên dưới. Chúng tôi đang nhập chức năng giai thừa từ tệp math_helpers.py và sử dụng nó để tính toán giai thừa của 6.factorial function from the math_helpers.py file and using it to compute the factorial of 6.

# computations.py

#
import from the math_helpers module
from math_helpers
import factorial

# a
function that makes use of the imported
function
def main():
   print("Python can compute things easily from the REPL")
print("for example, just write : 4 * 5")
print("and you get: 20.")
print("Computing things is easier when you use helpers")
print("Here we use the factorial helper to find the factorial of 6")
print(factorial(6))

# this runs when the script is called from the command line
if __name__ == '__main__':
   main()

3._

# lambdas.py

# a lambda that returns double whatever number we pass it
g = lambda x: x * 2


Gợi ý: 4

Nhập & nbsp; là một mô-đun Python tích hợp, nó có thể được sử dụng trực tiếp trong bất kỳ phiên bản Python nào., Python tự động biên dịch mã nguồn Python khi một mô-đun được & NBSP; Mô -đun chủ yếu để biên dịch tất cả các tệp nguồn python trong cây thư mục đệ quy. Nó cũng có thể biên dịch tệp nguồn Python đơn., Đây là một trong những thư viện phổ biến nhất có sẵn trong cả Python 2 và Python 3, nó có thể được sử dụng trực tiếp mà không cần cài đặt bất kỳ thư viện của bên thứ ba nào.

 import yourfilename # Import yourfilename.py file

import py_compile
py_compile.compile('yourfilename.py') # Compile single Python source file,
   py_compile.main(['yourfilename1.py', 'yourfilename2.py']) # or compile multiple Python source files.

import compileall
compileall.compile_dir('.') # Recursively compile all Python source files in a directory tree,
   compileall.compile_file('yourfilename.py') # or compile single Python source file.


Chúng ta có thể nhập tệp PYC trong Python không?

Tóm lại, để nhập tệp được biên dịch python (ví dụ: mô -đun. PYC), chỉ cần đặt nó vào cùng một thư mục trong đó nguồn (ví dụ: mô -đun.py) và đảm bảo rằng không có tệp nguồn tương ứng (mô -đun.py.pytrong ví dụ của chúng tôi) ở đó.Sau đó, mô -đun nhập thông thường sẽ hoạt động liền mạch.

Việc sử dụng tệp .pyc trong Python là gì?

Tệp PYC chứa mã Bytecode được biên dịch của mô -đun/chương trình được nhập để có thể bỏ qua mã dịch từ mã nguồn sang mã bytepode trên các lần nhập tiếp theo của tệp *.py.Có một *.Tệp PYC lưu thời gian biên dịch để chuyển đổi mã nguồn Python thành mã byte, mỗi khi tệp được nhập.contains the “compiled bytecode” of the imported module/program so that the “translation” from source code to bytecode can be skipped on subsequent imports of the *. py file. Having a *. pyc file saves the compilation time of converting the python source code to byte code, every time the file is imported.

Làm cách nào để mở tệp .pyc?

Nếu bạn không thể mở tệp PYC của mình một cách chính xác, hãy cố gắng nhấp chuột phải hoặc nhấn tệp từ lâu. Sau đó nhấp vào "Mở bằng" và chọn một ứng dụng.Bạn cũng có thể hiển thị tệp PYC trực tiếp trong trình duyệt: chỉ cần kéo tệp vào cửa sổ trình duyệt này và thả nó.right-click or long-press the file. Then click "Open with" and choose an application. You can also display a PYC file directly in the browser: Just drag the file onto this browser window and drop it.