python 公用的包可以使用 pip 管理工具方便地下载、使用、管理,那么如何将自己的工具包上传到 pip 服务器供别人下载呢,本记录相关内容。
python 包可以使用 pip 工具方便地管理,分享和使用。
pip
之类的命令来管理和安装python模块,避免手动管理引用文件。The Python Package Index (PyPI)
为 https://pypi.org/pip 源初始的形态,我们希望把自己的包也上传到这里。
要把自己的包发布到pip上,需要满足以下几个条件:
我们的包名称为 utils-vvd
(示例)
utils-vvd
__init__.py
core.py
setup.py
setup.py
文件,用于打包和发布from setuptools import setup, find_packages
str_version = '1.0.31'
setup(name='utils-vvd',
version=str_version,
description='Commonly used function library by MT',
url='https://github.com/zywvvd/utils_vvd',
author='zywvvd',
author_email='zywvvd@mail.ustc.edu.cn',
license='MIT',
packages=find_packages(),
zip_safe=False,
include_package_data=True,
install_requires= ['pypinyin', 'opencv-python'],
python_requires='>=3')
packages
setuptools
的 find_package
工具收集目录中含有 __init__.py
文件的文件夹 zip_safe 是否使用 zip 压缩 include_package_data 接受 MANIFEST.in 匹配的所有数据文件和目录。 install_requires 重要:包的相关依赖,在安装该包之前会检查列表中的依赖项并自动安装 python_requires python 版本需求 import sys
import setuptools
from setuptools import find_packages, setup
from numpy.distutils.core import setup
from numpy.distutils.misc_util import Configuration
from os.path import join, dirname, realpath
str_version = '2.0.15'
def configuration(parent_package='', top_path=''):
# this will automatically build the scattering extensions, using the
# setup.py files located in their subdirectories
config = Configuration(None, parent_package, top_path)
pkglist = setuptools.find_packages()
for i in pkglist:
config.add_subpackage(i)
config.add_data_files(join('mtutils', 'assets', '*.json'))
config.add_data_files(join('mtutils', 'assets', '*.jpg'))
return config
if __name__ == '__main__':
pass
setup(
configuration=configuration,
name='mtutils',
version=str_version,
description='Commonly used function library by MT',
url='https://github.com/zywvvd/utils_vvd',
author='zywvvd',
author_email='zywvvd@mail.ustc.edu.cn',
license='MIT',
packages=['mtutils'],
zip_safe=False,
install_requires= ['numba', 'func_timeout', 'pypinyin', 'opencv-python', 'sklearn'],
python_requires='>=3')
- Linux : `~/.pypirc`
- Windows: `C:\Users\Username\.pypirc`文件内容:
[distutils]
index-servers=pypi
[pypi]
repository = https://upload.pypi.org/legacy/
username = <username>
password = <password>
用户名和密码就是上一步骤所创建的,直接明文输入。如果你觉得明文密码不安全也可以留空,在后面的上传过程中会提示你手动输入。
python setup.py sdist
会在当前目录生成 dist
文件夹
你可以任选以下两种方式之一发布你的轮子。
python setup.py sdist upload
,还是和上面一样,简单但有安全隐患,目前已淘汰。twine upload dist/*
安装 twine :
pip install twine
whell
升级 setuptools
pip install wheel
pip install --upgrade setuptools
python setup.py bdist_wheel
dist
文件夹中会生成 whl 包pip install xxx.whl
直接安装如果你的包已经上传成功,那么当你登录PyPI网站后应该能在右侧导航栏看到管理入口。
pip install utils-vvd
但是会有一些问题,在国内一般都会换成阿里、清华、中科大等pip源,使用这些默认源无法下载到我们的包
需要手动指定 pypi 源才可以正确下载:
1pip install -i https://pypi.org/project utils-vvd
然后过几天,常用的镜像就会把你的包同步进去,就可以不用指定官方项目地址安装包了