1. 程式人生 > >python setuptools

python setuptools

源碼 nump 發現 地址 目錄 test collect 維護 all

在安裝python依賴庫時,我們使用pip install 或者python setup.py install. pip 會自己搜索適合的版本,python setup.py 需要下載源碼本地安裝。但是python setup.py 適合一鍵打包安裝。

setup import from setuptools, setuptools 包含依賴檢查、動態擴展等功能。

setup.py 包含的參數:

--name 包名稱
--version (-V) 包版本
--author 程序的作者
--author_email 程序的作者的郵箱地址
--maintainer 維護者
--maintainer_email 維護者的郵箱地址
--url 程序的官網地址
--license 程序的授權信息
--description 程序的簡單描述
--long_description 程序的詳細描述
--platforms 程序適用的軟件平臺列表
--classifiers 程序的所屬分類列表
--keywords 程序的關鍵字列表
--packages 需要處理的包目錄(包含__init__.py的文件夾) 
--py_modules 需要打包的python文件列表
--download_url 程序的下載地址
--cmdclass 
--data_files 打包時需要打包的數據文件,如圖片,配置文件等
--scripts 安裝時需要執行的腳步列表
--package_dir 告訴setuptools哪些目錄下的文件被映射到哪個源碼包。一個例子:package_dir = {‘‘: ‘lib‘},表示“root package”中的模塊都在lib 目錄中。
--requires 定義依賴哪些模塊 
--provides定義可以為哪些模塊提供依賴 
--find_packages() 對於簡單工程來說,手動增加packages參數很容易,剛剛我們用到了這個函數,它默認在和setup.py同一目錄下搜索各個含有 __init__.py的包。

                          其實我們可以將包統一放在一個src目錄中,另外,這個包內可能還有aaa.txt文件和data數據文件夾。另外,也可以排除一些特定的包

                          find_packages(exclude=["*.tests", "*.tests.*", "tests.*", "tests"])

--install_requires = ["requests"] 需要安裝的依賴包
--entry_points 動態發現服務和插件

  例子:

from setuptools import setup, find_packages


setup(
    name="prml",
    version="0.0.1",
    description="Collection of PRML algorithms",
    author="ctgk",
    python_requires=">=3.6",
    install_requires=["numpy", "scipy"],#需要安裝的依賴
    packages=find_packages(exclude=["test", "test.*"]),  # 需要打包的package,使用find_packages 來動態獲取package
    test_suite="test"
)

  

python setuptools