打包自定义python模块发布到pypi

简介: 发布pypi

准备要发布的模块

自己写了个日志模块xlog,要把该模块发布到pypi,目录结构如下:

xlog
├── LICENSE
├── README.md
├── setup.py
├── tests
└── xlog
    ├── __init__.py
    └── info.py

LICENSE:许可证,根据情况选一个
setup.py:打包用到的配置
xlog:核心代码
tests:测试代码

# info.py

import datetime


def info(msg):
    print(datetime.datetime.now(), msg)
    

setup.py

给setuptools提供一些模块相关的信息,示例:

import setuptools

with open("README.md", "r") as fh:
    long_description = fh.read()
    
setuptools.setup(
    name="xlog", 
    version="1.0", 
    author="xxx", 
    author_email="xxx@xxx.com", 
    description="",
    long_description=long_description,
    long_description_content_type="text/markdown",
    url="https://github.com/xxx", 
    packages=setuptools.find_packages(), 
    classifiers=[
        "Intended Audience :: Developers",
        "License :: OSI Approved :: Apache Software License",
        "Programming Language :: Python",
        "Programming Language :: Python :: 3.6",
        "Programming Language :: Python :: 3.7",
        "Programming Language :: Python :: 3.8",
        "Topic :: Software Development",
    ],
    install_requires=[
    ],
    python_requires='>=3.6',
)

默认情况下只打包py文件,如果包含其它文件比如.so格式,增加以下配置:

    package_data={
        "xlog": [
            "*.py",
            "*.so",
        ]
    },

打包

安装打包依赖:

pip install -U setuptools wheel

打包:

python setup.py sdist bdist_wheel

生成build、dist、xlog.egg-info三个目录,把dist目录上传至pypi即可。

上传

需要事先注册pypi账号
安装发布工具:

pip install -U twine

发布:

twine upload --repository-url https://upload.pypi.org/legacy/  dist/*

新注册的账号第一次发布的时候会报错,意思是邮箱未激活,登陆邮箱即可看到提醒激活的邮件。

测试

pip install xlog

from xlog import info

print(info.info("xxx"))

其他

在打包之前,最好先在本地测试,确保正确再发布

本地测试

在项目目录执行

python setup.py install

然后在其他项目中pip install测试。

目录
相关文章
|
6天前
|
Python
手撕Python!模块、包、库,傻傻分不清?一分钟带你弄明白!
手撕Python!模块、包、库,傻傻分不清?一分钟带你弄明白!
19 1
|
4天前
|
Python
python打包pyinstaller如何使用
解决打包时缺失`libpython3.so`的问题,需确保Python在编译时使用`--enable-shared`选项以支持共享库模式。之后,将生成的`libpython3.so`及`libpython3.9.so.1.0`复制到系统库目录`/usr/lib64`。参考链接提供详细步骤。
|
4天前
|
前端开发 Python
使用Python+openpyxl实现导出自定义样式的Excel文件
本文介绍了如何使用Python的openpyxl库导出具有自定义样式的Excel文件,包括设置字体、对齐方式、行列宽高、边框和填充等样式,并提供了完整的示例代码和运行效果截图。
8 1
使用Python+openpyxl实现导出自定义样式的Excel文件
|
3天前
|
JSON API 数据格式
Python网络编程:HTTP请求(requests模块)
在现代编程中,HTTP请求几乎无处不在。无论是数据抓取、API调用还是与远程服务器进行交互,HTTP请求都是不可或缺的一部分。在Python中,requests模块被广泛认为是发送HTTP请求的最简便和强大的工具之一。本文将详细介绍requests模块的功能,并通过一个综合示例展示其应用。
|
4天前
|
XML 存储 数据格式
使用Python的zipfile模块巧解Word批量生成问题
通过以上步骤,我们得到了填充了特定数据的 Word 文档。这个过程可以通过循环对多个数据集重复执行,从而实现批量生成多个 Word 文档的目标。
11 5
|
2天前
|
Python
Python模块的创建方法?
【8月更文挑战第18天】Python模块的创建方法?
4 2
|
2天前
|
Shell Python 容器
Python模块
【8月更文挑战第18天】Python模块
5 2
|
2天前
|
Shell Python 容器
Python模块是其代码组织和重用的基本方式。
【8月更文挑战第18天】Python模块是其代码组织和重用的基本方式。
6 1
|
4天前
|
Python
Python 进度条 tqdm模块
Python 进度条 tqdm模块
6 0
|
4天前
|
Linux 数据安全/隐私保护 Python
LInux下 python混淆代码打包产出exe
安装 PyArmor 加密Python程序:使用`pip install pyarmor`。为避免混淆 venv 目录,可指定排除此目录:`.\/venv\/bin\/pyarmor-7 pack -e \"--onefile\" -x \"--exclude venv\" main.py`。查阅详细文档:[官方指南](https://pyarmor.readthedocs.io/zh/v7.x/advanced.html)。