實際上Scrapyd的打包工具用到了setuptools,而打包參數主要是在setuptools里面的setup函數中設置。
**********************************************************對所學內容的簡單匯總*******************************************************
在安裝python依賴庫時,我們使用pip install 或者python setup.py install。
pip 會自己搜索適合的版本,python setup.py 需要下載源碼本地安裝。但是python setup.py 適合一鍵打包安裝。
setup函數包含的參數解釋
--name 包名稱------------生成的egg名稱
--version (-V) 包版本----生成egg包的版本號
--author 程序的作者------包的制作者名字
--author_email 程序的作者的郵箱地址
--maintainer 維護者
--maintainer_email 維護者的郵箱地址
--url 程序的官網地址
--license 程序的授權信息
--description 程序的簡單描述-------程序的概要介紹
--long_description 程序的詳細描述---程序的詳細描述
--platforms 程序適用的軟件平台列表
--classifiers 程序的所屬分類列表
--keywords 程序的關鍵字列表
--packages 需要處理的包目錄(包含__init__.py的文件夾)-------和setup.py同一目錄下搜索各個含有 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 動態發現服務和插件
樣例1如下:
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,exclude參數的存在,使打包的時候,排除掉這些文件
test_suite="test"
)
樣例2如下:
個人對使用packages相關參數的看法,
首先告訴程序去哪個目錄中找包,因此有了packages參數,
其次,告訴程序我包的起始路徑是怎么樣的,因此有了package_dir參數
最后,找到包以后,我應該把哪些文件打到包里面,因此有了package_data參數
setup(
name = "demo",
version = "0.1",
# 包含所有src目錄下的包 ---------項目中的所有源碼和測試用例文件目錄一般都存放在統一的src目錄下方便管理,默認也是創建src目錄
packages = find_packages('src'),
package_dir = {'':'src'},
package_data = {
# 包含所有.txt文件
'':['*.txt'],
# 包含data目錄下所有的.dat文件
'test':['data/*.dat'],
}
)