日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

如何创建 Python 库

發布時間:2023/12/8 python 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何创建 Python 库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

你好,我是悅創。

我最近想要去開始開發 Python 第三方庫,但是發現國內這樣的教程太少了,所以就我來寫吧!

還有就是曾經想創建一個 Python 庫,無論是為您的工作團隊還是在線的一些開源項目?在此博客中,您將學習如何操作!

當您使用相同的開發工具 Pycharm ,你會最容易跟上我的教程,當然您也可以使用不同的工具。

本文章使用的是工具有:

  • Pycharm
  • Linux 命令行

第 1 步:創建一個要放置庫的目錄

打開命令提示符并創建一個文件夾,您將在其中創建 Python 庫。

請記住:

  • pwd 您可以看到您當前的工作目錄。
  • ls 您可以列出當前目錄中的文件夾和文件。
  • cd <path> 您可以更改當前所在的目錄。
  • mkdir <folder> 您可以在當前工作目錄中創建一個新文件夾。

在我的例子中,我將使用的文件夾是 mypythonlibrary 。將當前工作目錄更改為文件夾。

第 2 步:為您的文件夾創建一個虛擬環境

在啟動您的項目時,創建一個虛擬環境來封裝您的項目總是一個好主意。虛擬環境由某個 Python 版本和一些庫組成。參考:這么全的 Python 虛擬環境?不看可惜了!

虛擬環境可防止以后遇到依賴性問題。

例如,在較舊的項目中,您可能使用的是較舊版本的 numpy 庫。一些曾經運行良好的舊代碼可能會在你更新 numpy 版本后不能正常運行了。

創建虛擬環境可以防止這種情況,當你與其他人協作時,虛擬環境也能確保你的程序在其他人的電腦上正常運行。

接下來,你要確保你當前的工作目錄是你剛剛創建的目錄,( cd <path/to/folder> ) 中創建 Python 庫的文件夾。)

繼續并通過鍵入以下內容創建虛擬環境:

python3 -m venv venv

創建后,你現在必須使用以下命令激活環境:

source venv/bin/activate

PS:Windows

venv\Scripts\activate

激活虛擬環境會修改 PATH 和 shell 的變量,以指向您創建的特定虛擬環境 Python 的設置。PATH 是 Linux 和其他類 Unix 操作系統中的環境變量,它告訴 shell 在響應用戶發出的命令時,去搜索哪些目錄的 Python 執行環境(即準備運行的程序)。命令提示符將更改為通過添加 ( yourenvname) 來指示您當前所在的虛擬環境。


你要確保你的環境已經安裝了 pip、wheel、setuptools、twine。我們稍后將需要它們來構建我們的 Python 庫。

sudo pip install wheel setuptools twine

我用的是 Linux 所以,Windows 的話,去掉 sudo。

第 3 步:創建文件夾結構

這一步,也就是創建我們開發庫所需要的文件。

在 Pycharm 中,打開您的文件夾 mypythonlibrary(或你自己創建的文件夾名稱)。它應該是這樣的:

你現在可以開始向項目添加文件夾和文件。您可以通過命令提示符或在 Visual Studio Code 本身中執行此操作。

  • 創建一個名為 setup.py 這是創建 Python 庫時最重要的文件之一!
  • 創建一個名為 README.md 你可以在此處編寫 Markdown 以向其他用戶描述我們的庫內容。
  • 創建一個名為 mypythonlib ,或者任何您希望在 pip 安裝時調用 Python 庫的文件夾。(如果你想稍后發布它,該名稱在 pip 上應該是唯一的。)
  • 在 mypythonlib 文件夾里面,創建名為 __init__.py 基本上,任何包含文件的 __init__.py 文件夾,在我們構建庫的時候,包含在庫中。大多數情況下,您可以將 __init__.py 文件留空,也就是不用寫代碼。導入時,其中的 __init__.py 將被執行,因此它應該只包含能夠運行您的項目所需的最少量代碼。現在,我們將保持原樣。
  • 此外,在 mypythonlib 文件夾中,創建一個名為 myfunctions.py
  • 最后,在您的根文件夾中創建一個文件夾測試。在里面,創建一個空 __init__.py 文件和一個空的 test_myfunctions.py
  • 你所創建的文件夾和代碼文件,現在應如下所示:

    第 4 步:為您的庫創建內容

    要將函數放入庫中,您可以將它們放入 myfunctions.py 文件中。例如,復制文件中的 hasrsine 函數:

    import numpy as np def haversine(lon1: float, lat1: float, lon2: float, lat2: float) -> float:"""Calculate the great circle distance between two points on theearth (specified in decimal degrees), returns the distance inmeters.All arguments must be of equal length.:param lon1: longitude of first place:param lat1: latitude of first place:param lon2: longitude of second place:param lat2: latitude of second place:return: distance in meters between the two sets of coordinates"""# Convert decimal degrees to radianslon1, lat1, lon2, lat2 = map(np.radians, [lon1, lat1, lon2, lat2])# Haversine formuladlon = lon2 - lon1dlat = lat2 - lat1a = np.sin(dlat / 2.0) ** 2 + np.cos(lat1) * np.cos(lat2) * np.sin(dlon / 2.0) ** 2c = 2 * np.arcsin(np.sqrt(a))km = 6367 * creturn km * 1000

    這個函數將給出兩個緯度和經度點之間的距離,單位為米。

    每當您編寫任何代碼時,都強烈建議同時為該代碼編寫測試。對于 Python 測試,可以使用 pytest 和 pytest-runner 庫。在虛擬環境中安裝庫:

    pip install pytest pip install pytest-runner pip install numpy

    讓我們為 haversine 函數創建一個小測試。復制以下內容并將其放入 test_myfunctions.py 文件中:

    from mypythonlib import myfunctionsdef test_haversine():assert myfunctions.haversine(52.370216, 4.895168, 52.520008,13.404954) == 945793.4375088713

    最后,讓我們創建一個 setup.py 文件,它將幫助我們構建庫。setup.py 的內容如下所示:

    from setuptools import find_packages, setupsetup(name='mypythonlib',packages=find_packages(),version='0.1.0',description='My first Python library',author='Me',license='MIT', )

    第 5 步:設置您想要創建的包

    雖然原則上 find_packages() 可以不帶任何參數使用,但這可能會導致包含不需要的包。

    所以,我們可以這么來寫:

    setup(name='mypythonlib',packages=find_packages(include=['mypythonlib']),version='0.1.0',description='My first Python library',author='Me',license='MIT', )

    第 6 步:設置庫所需的要求

    注意,當你的項目被其他人作為依賴項安裝時,pip 不會使用requirements.yml/ requirements.txt。

    通常,為此,您必須在文件的 install_requires 和 tests_require 參數中指定依賴項 setup.py。

    Install_requires 應該僅限于絕對需要的軟件包列表。這是因為您不想讓用戶安裝不必要的軟件包。 另請注意,你不需要列出屬于標準 Python 庫的包。

    如果你用的是 Python 自帶的庫,是可以不用寫的,并且保證這個庫是一直到現在的 Python 本版的可以使用的。

    也許你還記得我們 pytest 、numpy 之前安裝過這個庫。當然,你不想在其中添加 pytest 依賴項。這個包的用戶不需要它。為了僅在運行測試時自動安裝它,您可以將以下內容添加到您的 setup.py:

    from setuptools import find_packages, setupsetup(name='mypythonlib', # 應用名packages=find_packages(include=['mypythonlib']),version='0.1.0', # 版本號description='My first Python library',author='Me',license='MIT',install_requires=["numpy==1.21.2"], # 依賴列表setup_requires=['pytest-runner'],tests_require=['pytest==6.2.4'],test_suite='tests', )

    運行:將執行存儲在 “tests” 文件夾中的所有測試。

    python setup.py pytest (venv) aiyc@aiyc:~/Linux_Code/mypythonlibrary$ python setup.py pytest running pytest running egg_info creating mypythonlib.egg-info writing mypythonlib.egg-info/PKG-INFO writing dependency_links to mypythonlib.egg-info/dependency_links.txt writing requirements to mypythonlib.egg-info/requires.txt writing top-level names to mypythonlib.egg-info/top_level.txt writing manifest file 'mypythonlib.egg-info/SOURCES.txt' reading manifest file 'mypythonlib.egg-info/SOURCES.txt' writing manifest file 'mypythonlib.egg-info/SOURCES.txt' running build_ext ================================================================ test session starts ================================================================= platform linux -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1 rootdir: /home/aiyc/Linux_Code/mypythonlibrary collected 1 item tests/test_myfunctions.py .

    第 7 步:構建你的庫

    現在所有內容都已準備就緒,我們要構建我們的庫。確保您當前的工作目錄是 /path/to/mypythonlibrary(因此是項目的根文件夾)。在您的命令提示符中,運行:

    python setup.py bdist_wheel

    您的輪文件存儲在現在創建的 “dist” 文件夾中。您可以使用以下方法安裝您的庫:

    pip install /path/to/wheelfile.whl

    請注意,您還可以將您的庫發布到您工作場所內聯網上的內部文件系統,或發布到官方 PyPI 存儲庫并從那里安裝它。

    安裝 Python 庫后,您可以使用以下命令導入它:

    import mypythonlib from mypythonlib import myfunctions

    AI悅創·推出輔導班啦,包括「Python 語言輔導班、C++輔導班、算法/數據結構輔導班、少兒編程、pygame 游戲開發」,全部都是一對一教學:一對一輔導 + 一對一答疑 + 布置作業 + 項目實踐等。QQ、微信在線,隨時響應!V:Jiabcdefh

    總結

    以上是生活随笔為你收集整理的如何创建 Python 库的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。