python创建模块并发布到pypi
程序员文章站
2022-05-07 23:08:40
...
1.注释代码
使用连续的三个双引号开头和结尾,中间的部分就是注释内容
2.
python shell中键入:import sys; sys.path(在一行)显示搜索模块的路径
3.将函数打包成模块,在本地安装
3.1在文件test1.py中定义一个函数
"""定义了一个test1的module,提供了print_hello()函数"""
def print_hello():
"""print_hello函数主要功能是输出一个'Hello World!'字符串"""
print("Hello World!")
3.2创建一个文件夹名字和test1.py名相同,为test1。把test1.py放到test1文件夹中
3.3在test1文件夹中创建一个文件setup.py,文件内容是
```
from distutils.core import setup
setup(
name = '自定义',
version = '自定义',
py_modules = ['test1'],
author = '自定义',
author_email = '自己写',
url = '随便写的',
description = '描述',
)
```
3.4打开命令行,进入test1目录中,执行:python setup.py sdist。转化为模块
3.5打开命令行,进入test1目录中,执行:python setup.py install。将模块安装到本地(一般放到python安装目录下的Lib文件夹中)
4.导入test1模块:import test1
在使用print_hello函数时必须加上命名空间test1(在安装模块时,自动创建一个和模块名相同的命名空间),如:test1.print_hello();
如果要使用没有命名空间的方式,引入时要这么写:from test1 import print_hello,然后使用时这么写:print_hello()。这种方式会覆盖原先已经存在的print_hello()函数
5.在http://pypi.python.org注册账号
具体我就不写了,相信大家自己能解决
6.在user/tank文件夹下创建.pypirc文件内容是
这块可以参考官方给的文档:https://packaging.python.org/guides/migrating-to-pypi-org/#uploading
[distutils]
index-servers =
pypi
[pypi]
repository: https://upload.pypi.org/legacy/
username:账号
password:密码
安装twine:pip install twine
在test1文件夹中,执行 :twine upload dist/*
按说到这里就可以成功了,但我实验的时候总是报错--- HTTPError: 403 Client Error: You are not allowed to upload to 'test1'. for url: https://upload.pypi.org/legacy/,找了好久没有解决方法!!!
经多次实验得出结论,因为test1这个module名已经被占用了,所以一直不能上传。之后打包的时候把module名改成了testtank001,果然上传成功了!!!
上一篇: 安装Scrapy的爬虫框架踩坑记录
下一篇: pip3 换源