利用setuptools打包python程序的方法步驟
一、準(zhǔn)備工程文件
1.創(chuàng)建工程leeoo
2.在工程根目錄下創(chuàng)建setup.py文件
3.在工程根目錄下創(chuàng)建同名package
二、編輯setup.py
1.編輯setup.py文件
from setuptools import setup, find_packages setup( name='leeoo', # 包的名稱 version='1.0', # 版本號(hào) packages=find_packages(), # 動(dòng)態(tài)獲取packages description="leeoo package", author='Leo', author_email='leo4774177@gmail.com', url="None", )
2.參數(shù)說明
三、編寫測試代碼
1.在leeoo package下創(chuàng)建pkg
2.test.py文件內(nèi)容
def testfunc(): print("This is a test function..") class TestClass(object): def __init__(self, name): self.name = name print("This is a test Class..") def get_name(self): return self.name
3.將test.py中的內(nèi)容全部導(dǎo)入到leeoo的__init__.py中
這樣,以后import leeoo后,就可以直接使用leeoo.testfunc()了。
四、打包
1.命令行進(jìn)入工程根目錄
2.運(yùn)行命令
(venv) D:\pycharm_workspace\leeoo>python setup.py check running check
(venv) D:\pycharm_workspace\leeoo>python setup.py bdist_egg running bdist_egg running egg_info creating leeoo.egg-info writing leeoo.egg-info\PKG-INFO writing dependency_links to leeoo.egg-info\dependency_links.txt writing top-level names to leeoo.egg-info\top_level.txt writing manifest file 'leeoo.egg-info\SOURCES.txt' reading manifest file 'leeoo.egg-info\SOURCES.txt' writing manifest file 'leeoo.egg-info\SOURCES.txt' installing library code to build\bdist.win-amd64\egg running install_lib running build_py creating build creating build\lib creating build\lib\leeoo copying leeoo\__init__.py -> build\lib\leeoo creating build\bdist.win-amd64 creating build\bdist.win-amd64\egg creating build\bdist.win-amd64\egg\leeoo copying build\lib\leeoo\__init__.py -> build\bdist.win-amd64\egg\leeoo byte-compiling build\bdist.win-amd64\egg\leeoo\__init__.py to __init__.cpython-37.pyc creating build\bdist.win-amd64\egg\EGG-INFO copying leeoo.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO copying leeoo.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO copying leeoo.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO copying leeoo.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO zip_safe flag not set; analyzing archive contents... creating dist creating 'dist\leeoo-1.0-py3.7.egg' and adding 'build\bdist.win-amd64\egg' to it removing 'build\bdist.win-amd64\egg' (and everything under it)
3.查看生成的文件
在工程根目錄下,可以看到生成了一系列文件:
五、安裝leeoo
1.在工程目錄下(setup.py所在目錄)運(yùn)行命令
D:\pycharm_workspace\leeoo>python setup.py install running install running bdist_egg running egg_info writing leeoo.egg-info\PKG-INFO writing dependency_links to leeoo.egg-info\dependency_links.txt writing top-level names to leeoo.egg-info\top_level.txt reading manifest file 'leeoo.egg-info\SOURCES.txt' writing manifest file 'leeoo.egg-info\SOURCES.txt' installing library code to build\bdist.win-amd64\egg running install_lib running build_py creating build\bdist.win-amd64\egg creating build\bdist.win-amd64\egg\leeoo copying build\lib\leeoo\__init__.py -> build\bdist.win-amd64\egg\leeoo byte-compiling build\bdist.win-amd64\egg\leeoo\__init__.py to __init__.cpython-37.pyc creating build\bdist.win-amd64\egg\EGG-INFO copying leeoo.egg-info\PKG-INFO -> build\bdist.win-amd64\egg\EGG-INFO copying leeoo.egg-info\SOURCES.txt -> build\bdist.win-amd64\egg\EGG-INFO copying leeoo.egg-info\dependency_links.txt -> build\bdist.win-amd64\egg\EGG-INFO copying leeoo.egg-info\top_level.txt -> build\bdist.win-amd64\egg\EGG-INFO zip_safe flag not set; analyzing archive contents... creating 'dist\leeoo-1.0-py3.7.egg' and adding 'build\bdist.win-amd64\egg' to it removing 'build\bdist.win-amd64\egg' (and everything under it) Processing leeoo-1.0-py3.7.egg Copying leeoo-1.0-py3.7.egg to d:\dev_apps\anaconda5.3.0\lib\site-packages Adding leeoo 1.0 to easy-install.pth file Installed d:\dev_apps\anaconda5.3.0\lib\site-packages\leeoo-1.0-py3.7.egg Processing dependencies for leeoo==1.0 Finished processing dependencies for leeoo==1.0
2.查看安裝好的文件
我們看到上述打印日志中,將leeoo-1.0-py3.7.egg安裝到了d:\dev_apps\anaconda5.3.0\lib\site-packages。
六、使用leeoo
新建一個(gè)項(xiàng)目,然后導(dǎo)入leeoo:
import leeoo leeoo.testfunc() obj = leeoo.TestClass("demo") print(obj.get_name())
也可以使用:
from leeoo.pkg import test test.testfunc() obj = test.TestClass("demo") print(obj.get_name())
當(dāng)然也可以直接將testfunc()和TestClass導(dǎo)入,但是容易引起命名沖突。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
如何使用Python實(shí)現(xiàn)數(shù)據(jù)透視表、音頻文件格式轉(zhuǎn)換
這篇文章主要介紹了用Python實(shí)現(xiàn)數(shù)據(jù)透視表、音頻文件格式轉(zhuǎn)換,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-10-10Python使用Beets模塊實(shí)現(xiàn)自動(dòng)整理音樂庫
Beets是一個(gè)功能強(qiáng)大的Python庫,用于處理音樂文件的元數(shù)據(jù),在本文中,我們將探討beets模塊的常見使用方法,感興趣的可以跟隨小編一起學(xué)習(xí)一下2024-03-03在python win系統(tǒng)下 打開TXT文件的實(shí)例
下面小編就為大家分享一篇在python win系統(tǒng)下 打開TXT文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n]
這篇文章主要介紹了Python中的X[:,0]、X[:,1]、X[:,:,0]、X[:,:,1]、X[:,m:n]和X[:,:,m:n],文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-02-02PyCharm設(shè)置Ipython交互環(huán)境和宏快捷鍵進(jìn)行數(shù)據(jù)分析圖文詳解
這篇文章主要介紹了PyCharm設(shè)置Ipython交互環(huán)境和宏快捷鍵進(jìn)行數(shù)據(jù)分析圖文詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04python連接mongodb操作數(shù)據(jù)示例(mongodb數(shù)據(jù)庫配置類)
這篇文章主要介紹了python連接mongodb操作數(shù)據(jù)示例,主要包括插入數(shù)據(jù)、更新數(shù)據(jù)、查詢數(shù)據(jù)、刪除數(shù)據(jù)等2013-12-12