Python 包

我們根據一些標準將大量文件組織在不同的文件夾和子文件夾中,這樣我們就可以輕鬆地找到並管理它們。同樣,Python 中的包將模塊化方法的概念帶到了下一個邏輯層次。眾所周知,一個模塊可以包含多個對象,比如類、函數等。 一個包可以包含一個或多個相關模塊。實際上,包實際上是一個包含一個或多個模塊文件的文件夾。

讓我們使用以下步驟創建一個名為 mypackage 的包:

  • 創建一個名為D:\MyApp的新文件夾。
  • MyApp內,創建一個名為‘my package’的子文件夾。
  • 在 mypackage 文件夾中創建一個空的__init__.py文件。
  • 使用支持 Python 的編輯器,如 IDLE,用以下代碼創建模塊 greet.py 和 functions.py:

greet.py

def SayHello(name):
    print("Hello ", name) 

functions.py

def sum(x,y):
    return x+y

def average(x,y):
    return (x+y)/2

def power(x,y):
    return x**y 

就這樣。我們已經創建了名為 mypackage 的包。以下是文件夾結構:

Package Folder Structure

從包中導入模塊

現在,為了測試我們的包,將命令提示符導航到MyApp文件夾,並從那裡調用 Python 提示符。

D:\MyApp>python

從 mypackage 包導入函數模塊,並調用其 power()函數。

>>> from mypackage import functions
>>> functions.power(3,2)
9

還可以從包中的模塊導入特定功能。

>>> from mypackage.functions import sum
>>> sum(10,20)
30
>>> average(10,12)
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
NameError: name 'average' is not defined

init.py

包文件夾包含一個名為__init__.py的特殊文件,用於存儲包的內容。它有兩個目的:

  1. Python 解釋器會將包含__init__.py文件的文件夾識別為包。
  2. __init__.py從要導入的模塊中公開指定的資源。

一個空的__init__.py文件使得當這個包被導入時,上述模塊的所有功能都可用。注意__init__.py對於文件夾被 Python 識別為包是必不可少的。您可以根據需要定義單個模塊中的可用功能。

*Note:*We shall also create another Python script in the MyApp folder and import the mypackage package in it. It should be at the same level of the package to be imported. *__init__.py文件通常保持為空。但是,它也可以用於從包文件夾中的模塊中選擇特定的功能,並使它們可用於導入。如下修改__init__.py:

init.py

from .functions import average, power
from .greet import SayHello 

現在可以在解釋器會話或另一個可執行腳本中導入指定的函數。

MyApp文件夾中創建test.py來測試我的包。

test.py

from mypackage import power, average, SayHello
SayHello()
x=power(3,2)
print("power(3,2) : ", x) 

請注意,功能power()SayHello()是從包中導入的,而不是從它們各自的模塊中導入的,如前所述。上述腳本的輸出是:

D:\MyApp>python test.py
Hello world
power(3,2) : 9

全局安裝包

一旦創建了一個包,就可以通過運行安裝腳本來安裝它以供系統範圍使用。腳本從setuptools模塊調用setup()函數。

讓我們通過運行一個安裝腳本來安裝 mypackage,以便在系統範圍內使用。

將以下代碼保存為父文件夾MyApp中的 setup.py。腳本從 setuptools 模塊調用setup()函數。setup()函數接受各種參數,如名稱、版本、作者、依賴列表等。zip_safe參數定義包是以壓縮模式還是常規模式安裝。

Example: setup.py

from setuptools import setup
setup(name='mypackage',
version='0.1',
description='Testing installation of Package',
url='#',
author='auth',
author_email='[[email protected]](/cdn-cgi/l/email-protection)',
license='MIT',
packages=['mypackage'],
zip_safe=False) 

現在執行以下命令,使用 pip 實用程序安裝mypackage。 確保命令提示符在父文件夾中,在本例中為D:\MyApp

D:\MyApp>pip install mypackage
Processing d:\MyApp
Installing collected packages: mypack
Running setup.py install for mypack ... done
Successfully installed mypackage-0.1

現在 mypackage 可以在系統範圍內使用,並且可以在任何腳本或解釋器中導入。

D:\>python
>>> import mypackage
>>>mypackage.average(10,20)
15.0
>>>mypackage.power(10,2)
100

您可能還想發布該包供公眾使用。 PyPI (代表 Python 包索引)是 Python 包的存儲庫。 訪問https://packaging.python.org/distributing了解更多關於上傳包到 PyPI 的流程。**

原創文章,作者:BTWKV,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/129446.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
BTWKV的頭像BTWKV
上一篇 2024-10-03 23:26
下一篇 2024-10-03 23:26

相關推薦

  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python編程二級證書考試相關現已可以上網購買

    計算機二級Python考試是一項重要的國家級認證考試,也是Python編程的入門考試。與其他考試一樣,Python編程二級證書的考生需要進入正式考試,而為了備考,這篇文章將詳細介紹…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29

發表回復

登錄後才能評論