โปรแกรม python ทั้งหมดจะคอมไพล์ซอร์สโค้ดของคุณโดยอัตโนมัติเพื่อคอมไพล์โค้ดที่เรียกว่าเป็นไบต์โค้ด ก่อนดำเนินการ
เมื่อใดก็ตามที่เรานำเข้าโมดูลเป็นครั้งแรกหรือเมื่อไฟล์ต้นฉบับของคุณเป็นไฟล์ใหม่หรือเรามีไฟล์ที่อัปเดต ไฟล์ที่คอมไพล์ล่าสุด ไฟล์ .pyc จะถูกสร้างขึ้นจากการคอมไพล์ไฟล์ในไดเร็กทอรีเดียวกันกับไฟล์ .py (จาก python 3- คุณอาจเห็นไฟล์ .pyc อยู่ในไดเร็กทอรีย่อยที่เรียกว่า __pycache__ แทนในไดเร็กทอรีเดียวกันกับไฟล์ .py ของคุณ) นี่เป็นกลไกที่ช่วยประหยัดเวลาเพราะจะป้องกันไม่ให้ไพ ธ อนข้ามขั้นตอนการคอมไพล์เมื่อคุณรันโปรแกรมของคุณในครั้งต่อไป
จะไม่มีการสร้างไฟล์ .pyc หากคุณเรียกใช้สคริปต์ด้วยการนำเข้า (ไฟล์อื่น) ตัวอย่างเช่น หากคุณมีสคริปต์ (file1.py) ที่นำเข้าไฟล์อื่น (file2.py)
วิธีที่ง่ายที่สุดในการสร้างไฟล์ PYC คือการนำเข้า สมมติว่าคุณมีชื่อโมดูล MainP.py เพียงแค่ทำ -
>>> import MainP >>>
อย่างไรก็ตาม หากคุณต้องการสร้างไฟล์ .pyc สำหรับโมดูลที่ไม่ได้นำเข้า เราต้องตั้งค่าโมดูลที่เรียกว่า py_compile และรวบรวมโมดูลทั้งหมดเพื่อทำงานนั้น
โมดูล py_compile สามารถคอมไพล์โมดูลใดๆ ได้ด้วยตนเอง นอกจากนี้เรายังสามารถสร้างโมดูล py_compile แบบโต้ตอบได้โดยใช้ py_compile ฟังก์ชั่นคอมไพล์
>>> import py_compile >>> py_compile.compile('test.py') '__pycache__\\test.cpython-36.pyc' >>>
เมื่อเราเรียกใช้คำสั่งข้างต้นใน python shell เราจะเห็นว่าไฟล์ .pyc ถูกสร้างขึ้นในโฟลเดอร์ __pycache__ (python 3) อย่างอื่นจะถูกสร้างขึ้นในตำแหน่งเดียวกับไฟล์ test.py ของคุณ
ในกรณีที่คุณต้องการคอมไพล์ไฟล์หลายๆ ไฟล์พร้อมกัน คุณสามารถใช้ฟังก์ชัน py_compile.main() แบบนี้ −
>>> #Compiles several files at a time >>> py_compile.main(['test1.py', 'test2.py', 'test_sample1.py', 'test_sample2.py']) 0
เราจะเห็นได้ว่าไฟล์ที่คอมไพล์ทั้งสี่ถูกสร้างขึ้น -
อย่างไรก็ตาม ในกรณีที่คุณต้องการคอมไพล์ไฟล์ทั้งหมดภายในโฟลเดอร์ คุณสามารถใช้ฟังก์ชัน 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
ตอนนี้เราเห็นไฟล์ .pyc ถูกสร้างขึ้นภายในตำแหน่ง "folder_name\__pycache__"
ในกรณีที่คุณต้องการคอมไพล์ไฟล์ทั้งหมดภายในไดเร็กทอรีหรือไดเร็กทอรี คุณสามารถทำได้ด้วยฟังก์ชันคอมไพล์
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'...
และเราจะเห็นว่าไฟล์ .pyc นั้นถูกสร้างขึ้นสำหรับไฟล์ทั้งหมดภายในไดเร็กทอรี __pycache__