2015-09-15 23 views
8

Tôi biết rằng khi tập lệnh Python được nhập vào tập lệnh python khác, thì tập lệnh .pyc được tạo. Có cách nào khác để tạo file .pyc bằng cách sử dụng terminal bash linux?Cách tạo tệp .pyc từ tập lệnh Python

+0

không thể làm $ python -c "tập lệnh nhập"? – Yichun

+1

['python -m compileall'] (https://docs.python.org/2/library/compileall.html) –

+0

Tôi nghĩ bạn nên thử sử dụng 'zipfile' để tạo pyc. Thật dễ dàng để làm cho nó. Bạn có thể sử dụng nó để triển khai mã của bạn không có src. – xiaohen

Trả lời

5

Bạn có thể sử dụng mô-đun py_compile. Chạy nó từ dòng lệnh (-m tùy chọn):

Khi module này được chạy như một kịch bản, main() được sử dụng để biên dịch tất cả các tập tin có tên trên dòng lệnh.

Ví dụ:

$ tree 
. 
└── script.py 

0 directories, 1 file 
$ python3 -mpy_compile script.py 
$ tree 
. 
├── __pycache__ 
│   └── script.cpython-34.pyc 
└── script.py 

1 directory, 2 files 

compileall cung cấp chức năng tương tự, để sử dụng nó, bạn muốn làm điều gì đó như

$ python3 -m compileall ... 

đâu ...là các tập tin để biên dịch hoặc thư mục có chứa file nguồn, được chuyển tiếp đệ quy.


Một lựa chọn khác là để nhập khẩu các mô-đun:

$ tree 
. 
├── module.py 
├── __pycache__ 
│   └── script.cpython-34.pyc 
└── script.py 

1 directory, 3 files 
$ python3 -c 'import module' 
$ tree 
. 
├── module.py 
├── __pycache__ 
│   ├── module.cpython-34.pyc 
│   └── script.cpython-34.pyc 
└── script.py 

1 directory, 4 files 

-c 'import module' là khác nhau từ -m module, bởi vì trước đây sẽ không thực hiện khối if __name__ == '__main__': trong module.py.

6

Sử dụng lệnh sau:

python -m compileall <your_script.py> 

này sẽ tạo your_script.pyc tập tin trong cùng thư mục.

Bạn có thể vượt qua mục cũng như:

python -m compileall <directory> 

này sẽ tạo pyc file cho tất cả các file py trong thư mục

cách khác là tạo ra một kịch bản như

import py_compile 
py_compile.compile("your_script.py") 

Nó cũng tạo tệp your_script.pyc. Bạn có thể lấy tên tệp làm đối số dòng lệnh

Các vấn đề liên quan