一. 目錄結構
|--pkgname二. 檔案解析|----|--__init__.py
|----|--module1.py
|----|--module2.py
|----|--subpkgname
|----|----|--__init__.py
|----|----|--module3.py
|--setup.py
pkgname為目錄名, 亦即包名, 該目錄下有__init__.py, module1.py, module2.py檔案及subpkgname目錄,
subpkgname目錄下有__init__.py, module3.py檔案及subpkgname目錄.
pkgname同級目錄下有setup.py檔案.
__init__.py中可以控制當前包都有哪些模組可以匯出,在__init__.py中新增「__all__ = ['module1','module2']」
__init__.py可以為空.
module檔案內可為函式, 類等平常使用的方法, 不多作解釋.
setup.py檔案內容基本如下:
from setuptools import setup
requires = #依賴包, 如有
setup(name="bunshinn", #包名
version="18.8.30",
install_requires=requires,
description="test to install module",
author="bunshinn",
author_email = "[email protected]",
url = "",
py_modules=['pkgname.module1','pkgname.module2',], #要引入的模組
packages=['pkgname.subpkgname'], #要引入的包
)
三. 製作與安裝
進入該目錄下
python setup.py build #生成包檔案
python setup.py sdist #生成壓縮包
a. 將壓縮包解壓後, 進入主目錄, 內有setup.py檔案
執行 python setup.py install
完成包安裝.
b.使用pip安裝
pip install path_to_dist_package,
若出現 cannot uninstall a distutils installed project'錯誤提示, 需對pip加引數如下:
pip install --ignore-installed d:\packages\packagename.tar.gz
四. 發布至pypi
a. 準備工作: 註冊pypi帳戶
b. 安裝twine: pip install twine
c. 環境變數: path/to/python/scripts設為環境變數(pip同目錄, 若已設, 忽略之)
d. 在第三步基礎上, 執行twine upload dist/* , 輸入帳號密碼, 如有報錯, 剛已上傳成功, 可通過 pip pkgname直接安裝
e. httperror: 403 client error: the credential associated with user 'bunshinn' isn't allowed to upload to project 'bstools'. see for more information. for url: 若出現類似錯誤, 模組命已被占用,可更換模組名重試
五. pip安裝緩慢
可指定源進行安裝:
pip install -i --trusted-host pypi.douban.com pkgname
python打包使用者自定義模組
假設需要打包的模組檔名為my.py,打包模組需要新建的乙個指令碼setip.py,然後在指令碼下輸入如下的內容 from disutils.core import setup setup以管理員身份執行cmd,進入my.py的目錄,執行下面的命令即可打包 python setup.py sdist執...
python 自定義 包 模組 打包 安裝
1 把自定義模組的路徑,匯入sys.path,可以在任何地方直接匯入自定義模組。import sys print sys.path 2 匯入自定義包下的模組 包匯入路徑內的每個目錄內都必須有 init py檔案,init py可包含python 但通常為空,僅用於扮演包初始化的掛鉤,替目錄產生模組的...
製作自定義CSDNBLOG面板
如果你已經有了乙個比較個性化的計數器的話,下面我教你如何為csdnblog製作自定義 的功能,如果你沒有並且需要為你的csdnblog新增乙個個性化計數器的話,可以參閱我寫的另一篇文章。關於給csdnblog新增計數器 1 使用系統定義 系統為我們已經提供了幾個定義好的 介面,我們可以通過 選項 配...