Python的setuptools详解【2】find_packages()
一、提要
python中安裝包的方式有很多種:
如何創建以上的包,我們在上文展示如何通過"Python蛋",將自己的一個程序安裝到python環境中。
本文重點指出,如何使用find_packages()將更多個資源打包成python蛋,并解釋如何調用。
二 實驗2:生成多包項目,并安裝測試
1.準備工作
如果說 在每個帶有——init——。py的目錄,都市# 當前測試的目錄是 /tmp/demo;創建目錄-文件結構:`-- demo|-- helloapp| |-- hello.py| `-- __init__.py|-- __init__.py|-- myapp| |-- __init__.py| `-- myapp.py`-- setup.py# 2.編輯 setup.py from setuptools import setup, find_packagessetup(name="demo",version="1.0",author="zbj",author_email="22@qq.com",packages=find_packages( exclude=["*.tests", "*.tests.*", "tests"] ) #排除tests等 )# 3.編輯 hello.py def hello_func():print("HelloWorld")# 4.編輯 myapp.py def myapp_func():print("嘿嘿嘿")這里專門解釋find_packages()是啥東西?
就是在當前目錄,以及當前目錄下,所有的python包(帶__init__.py的目錄)都搜索,并一起打成egg文件包。
find_packages(xyz),就是搜索名稱為xyz的包,以及xyz的下層目錄的包搜索出來,并一起打成egg文件包。
2.源碼安裝
# 進入setup.py所在的那層目錄 cd /tmp/demo# 檢查setup.py 是否有錯誤(warning不是錯誤) python setup.py check# 安裝 python setup.py install用tree查看
?3.結果
打包之后多出兩個文件夾,分別是demo.egg-info和dist。demo.egg-info是必要的安裝信息,
而dist中的壓縮包就是安裝包,此時默認的egg包,egg包就是zip包,如果需要使用egg包,name將egg后綴改成zip解壓即可
用unzip查看egg:
$ cd? ?/usr/local/lib/python3.8/dist-packages? ? ? ? ? ? ? ? ?#進入python包目錄
$? unzip -l? demo-1.0-py3.8.egg? ?
Archive: ?demo-1.0-py3.8.egg
? Length ? ? ?Date ? ?Time ? ?Name
--------- ?---------- ----- ? ----
? ? ? 174 ?2021-11-10 16:13 ? EGG-INFO/PKG-INFO
? ? ? 192 ?2021-11-10 16:13 ? EGG-INFO/SOURCES.txt
? ? ? ? 1 ?2021-11-10 16:13 ? EGG-INFO/dependency_links.txt
? ? ? ?15 ?2021-11-10 16:13 ? EGG-INFO/top_level.txt
? ? ? ? 1 ?2021-11-10 16:13 ? EGG-INFO/zip-safe
? ? ? ? 0 ?2021-11-10 16:03 ? helloapp/__init__.py
? ? ? ?42 ?2021-11-10 16:10 ? helloapp/hello.py
? ? ? 140 ?2021-11-10 16:13 ? helloapp/__pycache__/__init__.cpython-38.pyc
? ? ? 261 ?2021-11-10 16:13 ? helloapp/__pycache__/hello.cpython-38.pyc
? ? ? ? 0 ?2021-11-10 16:03 ? myapp/__init__.py
? ? ? ?45 ?2021-11-10 16:11 ? myapp/myapp.py
? ? ? 137 ?2021-11-10 16:13 ? myapp/__pycache__/__init__.cpython-38.pyc
? ? ? 260 ?2021-11-10 16:13 ? myapp/__pycache__/myapp.cpython-38.pyc
--------- ? ? ? ? ? ? ? ? ? ? -------
? ? ?1268 ? ? ? ? ? ? ? ? ? ? 13 files
4.測試
測試的時候需要注意導包路徑和當前所在路徑
目前所在路徑是: /tmp/demo
直接進入python解釋器: python3(我自己安裝的python3版本)
以上將兩個包內的文件通過python蛋裝入系統。注意,不同的包將有不同的from語句加載。
參考文章
Python打包之setuptools - 我用python寫Bug - 博客園
總結
以上是生活随笔為你收集整理的Python的setuptools详解【2】find_packages()的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker概念:用Dockerfile
- 下一篇: Python获取本地mac地址、主机名、