如何打包多個Python模組?
處理執行數千行的複雜程式會產生兩個基本問題:管理程式碼以瞭解在何處實現了哪些功能,以及在出現錯誤時除錯程式。幸運的是,這兩個問題都可以透過將程式碼分解成多個模組,然後從不同的模組建立一個單個指令碼檔案來解決。
Python提供了這種精確的功能,可以將不同的Python模組捆綁到單個可執行指令碼中。此功能允許輕鬆管理和除錯複雜程式。
使用zip
打包Python中多個模組的一種方法是從不同的模組建立一個zip檔案,然後在Python終端中執行該zip檔案。要使用此方法,第一步是定義不同的模組,確保其中一個模組名為main.py,這允許編譯器知道程式執行將從哪裡開始。
然後應將模組壓縮到單個檔案中,然後可以執行該檔案以獲得輸出。
語法
以下是Python中執行zip檔案的語法:
python file_name.zip
示例
在此示例中,第一步是定義main.py模組,該模組從sum_fibonacci模組匯入fibonacci函式並將值10傳遞給該函式。
from sum_fibonacci import fibonacci output = fibonacci(10) print(output)
在sum_fibonacci模組中定義的fibonacci函式用於計算斐波那契數列中前10個數的和,並將值返回到main模組。
def fibonacci(term): first_val = 0 second_val = 1 sum_fibonacci = 0 for num in range(0, term): sum_fibonacci = sum_fibonacci + first_val next_val = first_val + second_val first_val = second_val second_val = next_val return sum_fibonacci
然後將main模組和sum_fibonacci模組壓縮到fibonacci.zip中,然後可以使用以下程式碼執行它以獲得所需的輸出。
python fibonacci.zip
輸出
輸出結果為斐波那契數列中前10個數的和。
88
使用stickytape
打包Python中多個模組的另一種方法是使用stickytape命令。要使用stickytape,第一步是定義需要捆綁的不同模組,其中一個模組應命名為main.py,因為執行從此模組開始。
定義所有模組後,可以在Python shell中對main模組使用stickytape來自動建立一個單個指令碼檔案,該檔案可以執行以獲得程式碼的輸出。
語法
以下是使用stickytape建立單個檔案的語法:
stickytape main.py > output_file_name.py
示例
第一步是從程式執行開始的地方定義main.py模組。main模組匯入其他模組的成員,並用於呼叫這些成員。
# Importing the members of the modules from calculate import Calculation from fact_find import factorial # Calling method of Calculation class in calculate module calc = Calculation(value=5) # Calling the factorial function in fact_find module output = factorial(calc.value) print(output)
接下來定義calculate.py模組中的Calculation類,以接收來自main模組的值並將其分配給self.value物件。
class Calculation: def __init__(self, value): self.value = value # assigning 5 as value
然後定義fact_find模組中的Factorial函式,以遞迴計算5的階乘。
factorial(fact): if fact == 1: return fact else: return fact*factorial(fact-1) # recursive function to find factorial
最後,使用stickytape將所有模組捆綁到calculate_factorial.py中,然後可以執行該檔案以獲得程式的輸出。
# Creating a single file which bundles all the modules stickytape main.py > calculate_factorial.py
輸出
輸出結果為5的階乘。
120
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP