溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python程序的打包分發怎么實現

發布時間:2022-06-28 14:08:04 來源:億速云 閱讀:136 作者:iii 欄目:開發技術

這篇文章主要講解了“python程序的打包分發怎么實現”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python程序的打包分發怎么實現”吧!

    引言

    python編程時,一部分人習慣將實現同一個功能的代碼放在同一個文件;

    使用這些代碼只需要import就可以了;

    下面看一個例子。

    testModel.py

    class Test:
        name = 'tom'
        age = 0
        __weight = 0
        def __init__(self,n,a,w):
            self.name = n
            self.age = a
            self.__weight = w
        def speak(self):
            print("Test model: ",self.name,self.age, self.__weight)

    接著,引用上面的代碼:

    import testModel
    testModel.Test("tom", 0, 1).speak()
    # Test model:  tom 0 1

    python程序打包

    • 新建一個文件夾testPackages;

    • testPackages下新建一個空文件__init__.py,聲明這是一個python包

    • testPackages下新建一個空文件testModel.py,用于存放函數代碼

    testPackages/
            ├── __init__.py
            └── testModel.py

    接著,引用上面的代碼:

    from testPackages import testModel
    testModel.Test("tom", 0, 1).speak()
    # Test model:  tom 0 1

     __init__.py文件的作用

    __init__.py的作用就是申明這是一個包;

    每次導入包之前都會先執行__init__.py,因此可以在其中申明一些定義,比如變量或接口;

    下面我們看一個__init__.py的使用例子

    testPackages/
            ├── __init__.py
            ├── add.py
            └── testModel.py

    add.py

    def add(a, b):
        return a + b

    __init__.py

    import testPackages.add
    add = testPackages.add.add

    接著,引用上面的代碼:

    import testPackages
    testPackages.add(1,2)
    # 3

    構建python包

    使用setuptools構建python包

    packaging_tutorial/
    ├── LICENSE
    ├── pyproject.toml  #使用什么工具(pip或build)構建項目
    ├── README.md
    ├── src/
    │   └── example_package/
    │       ├── __init__.py
    │       └── example.py
    └── tests/  #例子數據

    pyproject.toml

    [build-system]
    requires = ["setuptools>=42"]
    build-backend = "setuptools.build_meta"

    setup.py是setuptool的構建腳本,用于設置包的基本信息:名字,版本和源碼地址

    import setuptools
    with open("README.md", "r", encoding="utf-8") as fh:
        long_description = fh.read()
    setuptools.setup(
        name="testPackages",
        version="2.2.1",
        author="Author",
        author_email="author@example.com",
        description="A small example package",
        long_description=long_description,
        long_description_content_type="text/markdown",
        url="http://baidu.com/",
        classifiers=[
            "Programming Language :: Python :: 3",
            "License :: OSI Approved :: MIT License",
            "Operating System :: OS Independent",
        ],
        package_dir={"": "src"},
        packages=setuptools.find_packages(where="src"),
        python_requires=">=3.6",
    )

    setup()參數:

    package_dir:字典,key是包名,value是一個文件夾;

    packages:分發包需要導入的所有模塊列表;可以手動輸入,也可以使用find_packages函數自動尋找package_dir下的所有包或模塊。

    生成分發包

    python3 setup.py sdist

    本地安裝

    python3 -m pip install ./dist/testPackages-2.2.1.tar.gz

    調用

    from testPackages import add
    add.add(1,2)
    # 3
    #在__init__.py構建了add = testPackages.add.add,所以可以直接使用
    add(1,2)
    # 3

    感謝各位的閱讀,以上就是“python程序的打包分發怎么實現”的內容了,經過本文的學習后,相信大家對python程序的打包分發怎么實現這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女