Computer >> Máy Tính >  >> Lập trình >> Python

Cách tạo tệp mã byte trong python

Tất cả chương trình python đều tự động biên dịch mã nguồn của bạn để biên dịch mã còn được gọi là mã byte, trước khi thực thi nó.

Bất cứ khi nào chúng tôi nhập một mô-đun lần đầu tiên hoặc khi tệp nguồn của bạn là tệp mới hoặc chúng tôi có tệp cập nhật thì tệp được biên dịch gần đây, tệp .pyc sẽ được tạo khi biên dịch tệp trong cùng thư mục với tệp .py (từ python 3- bạn có thể thấy tệp .pyc nằm trong thư mục con có tên __pycache__ thay vì trong cùng thư mục với tệp .py của bạn). Đây là cơ chế tiết kiệm thời gian vì nó ngăn python bỏ qua bước biên dịch khi bạn chạy chương trình của mình vào lần tiếp theo.

Không có tệp .pyc nào được tạo nếu bạn đang chạy tập lệnh có quá trình nhập (tệp khác). Ví dụ:nếu bạn có một tập lệnh (file1.py) nhập một tệp khác (file2.py).

Cách dễ nhất để tạo tệp PYC là nhập tệp đó. Giả sử bạn có tên mô-đun MainP.py. chỉ cần làm -

>>> import MainP
>>>

Tuy nhiên, nếu bạn muốn tạo tệp .pyc cho một mô-đun không được nhập, chúng tôi phải thiết lập các mô-đun có tên py_compile và biên dịch tất cả các mô-đun để thực hiện tác vụ đó.

Mô-đun py_compile có thể biên dịch bất kỳ mô-đun nào theo cách thủ công. Chúng ta cũng có thể tạo mô-đun py_compile một cách tương tác bằng cách sử dụng py_compile. chức năng biên dịch.

>>> import py_compile
>>> py_compile.compile('test.py')
'__pycache__\\test.cpython-36.pyc'
>>>

Khi chúng tôi chạy câu lệnh trên trong python shell, chúng tôi có thể thấy tệp .pyc được tạo trong thư mục __pycache__ (python 3), tệp khác sẽ được tạo ở cùng vị trí với tệp test.py của bạn.

Cách tạo tệp mã byte trong python

Trong trường hợp bạn muốn biên dịch nhiều tệp cùng một lúc, bạn có thể sử dụng hàm py_compile.main (), như thế này -

>>> #Compiles several files at a time
>>> py_compile.main(['test1.py', 'test2.py', 'test_sample1.py', 'test_sample2.py'])
0

Chúng ta có thể thấy rằng bốn tệp đã biên dịch khác nhau được tạo -

Cách tạo tệp mã byte trong python

Tuy nhiên, trong trường hợp bạn muốn biên dịch tất cả các tệp bên trong một thư mục, bạn có thể sử dụng hàm compileall.compile_dir ().

>>> # Compile all the .py file from a particular folder.
>>> import compileall
>>> compileall.compile_dir('gmplot')
Listing 'gmplot'...
Listing 'gmplot\\.git'...
Listing 'gmplot\\.git\\hooks'...
Listing 'gmplot\\.git\\info'...
Listing 'gmplot\\.git\\logs'...
Listing 'gmplot\\.git\\logs\\refs'...
Listing 'gmplot\\.git\\logs\\refs\\heads'...
Listing 'gmplot\\.git\\logs\\refs\\remotes'...
Listing 'gmplot\\.git\\logs\\refs\\remotes\\origin'...
Listing 'gmplot\\.git\\objects'...
Listing 'gmplot\\.git\\objects\\info'...
Listing 'gmplot\\.git\\objects\\pack'...
Listing 'gmplot\\.git\\refs'...
Listing 'gmplot\\.git\\refs\\heads'...
Listing 'gmplot\\.git\\refs\\remotes'...
Listing 'gmplot\\.git\\refs\\remotes\\origin'...
Listing 'gmplot\\.git\\refs\\tags'...
Compiling 'gmplot\\__init__.py'...
Compiling 'gmplot\\color_dicts.py'...
Listing 'gmplot\\gmplot'...
Listing 'gmplot\\gmplot\\markers'...
Compiling 'gmplot\\gmplot.py'...
Compiling 'gmplot\\google_maps_templates.py'...
Compiling 'gmplot\\setup.py'...
Listing 'gmplot\\tests'...
True

Bây giờ chúng ta thấy tệp .pyc được tạo bên trong vị trí ‘folder_name \ __ pycache__’.

Cách tạo tệp mã byte trong python

Trong trường hợp, bạn muốn biên dịch tất cả các tệp bên trong một thư mục hoặc các thư mục, bạn có thể thực hiện bằng chức năng biên dịch.

C:\Users\rajesh>python -m compileall
Skipping current directory
Listing 'C:\\Python\\Python361\\python36.zip'...
Can't list 'C:\\Python\\Python361\\python36.zip'
Listing 'C:\\Python\\Python361\\DLLs'...
Listing 'C:\\Python\\Python361\\lib'...
Listing 'C:\\Python\\Python361'...
Compiling 'C:\\Python\\Python361\\BeautifulSoup_script1.py'...
Compiling 'C:\\Python\\Python361\\EDA_python1.py'...
Compiling 'C:\\Python\\Python361\\MainP.py'...
Compiling 'C:\\Python\\Python361\\NegativeAgeException.py'...
Compiling 'C:\\Python\\Python361\\NegativeNumberException.py'...
Compiling 'C:\\Python\\Python361\\OtherP.py'...
Compiling 'C:\\Python\\Python361\\__init__ Constructor.py'...
Compiling 'C:\\Python\\Python361\\attribute_access.py'...
…..
…
Compiling 'C:\\Python\\Python361\\variable_arguments_list.py'...
Compiling 'C:\\Python\\Python361\\variable_arguments_list1.py'...
Compiling 'C:\\Python\\Python361\\winquality1.py'...

và chúng ta có thể thấy rằng tệp .pyc được tạo cho tất cả các tệp bên trong thư mục __pycache__.

Cách tạo tệp mã byte trong python