python创建自己的包_创建并发布自己的Python包

创建项目

项目需要有以下的文件结构:

packaging_tutorial/

example_pkg/

__init__.py

setup.py

LICENSE

README.md

1

2

3

4

5

6

7

packaging_tutorial/

example_pkg/

__init__.py

setup.py

LICENSE

README.md

example_pkg是包的文件名,因为是python包,所以要有__init__.py,setup.py是安装的配置脚本,LICENSE是使用许可,README.md是Markdown格式的说明文档。

创建并配置 setup.py

以下是我的一个setup.py文件。

import re

import setuptools

from setuptools import setup

with open('torch_template/version.py') as fid:

try:

__version__, = re.findall( '__version__ = "(.*)"', fid.read() ) # 获取版本号

except:

raise ValueError("could not find version number")

with open("README.md", "r") as fh:

long_description = fh.read() # 获取 README.md (会显示在PyPi主页上)

setup(

name='torch-template',

version=__version__,

description='Torch_Template - A PyTorch template with commonly used models and tools',

long_description=long_description, # (会显示在PyPi主页上)

long_description_content_type="text/markdown", # ReadMe如果使用Markdown格式,需要显示指定,默认为Sphinx格式

url='https://github.com/misads/torch_template', # 项目链接(一般是GitHub或者网站主页)

author='xyu.ink',

author_email='xuhaoyu@tju.edu.cn',

license='MIT',

install_requires=[

"torch",

"numpy",

"torchvision",

"tensorboardX",

], # 需要安装的依赖,pip安装自己的包时会先安装依赖

packages=['torch_template', 'torch_template/utils'], # 需要包含哪些包,也可以使用setuptools.find_packages()自动搜索

classifiers=[

"Development Status :: 3 - Alpha",

"Programming Language :: Python :: 3",

"License :: OSI Approved :: MIT License",

"Operating System :: OS Independent"

], # 版本、语言、使用许可等信息

python_requires='>=3.5', # 要求的python版本

)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

importre

importsetuptools

fromsetuptoolsimportsetup

withopen('torch_template/version.py')asfid:

try:

__version__,=re.findall('__version__ = "(.*)"',fid.read())# 获取版本号

except:

raiseValueError("could not find version number")

withopen("README.md","r")asfh:

long_description=fh.read()# 获取 README.md (会显示在PyPi主页上)

setup(

name='torch-template',

version=__version__,

description='Torch_Template - A PyTorch template with commonly used models and tools',

long_description=long_description,# (会显示在PyPi主页上)

long_description_content_type="text/markdown",# ReadMe如果使用Markdown格式,需要显示指定,默认为Sphinx格式

url='https://github.com/misads/torch_template',# 项目链接(一般是GitHub或者网站主页)

author='xyu.ink',

author_email='xuhaoyu@tju.edu.cn',

license='MIT',

install_requires=[

"torch",

"numpy",

"torchvision",

"tensorboardX",

],# 需要安装的依赖,pip安装自己的包时会先安装依赖

packages=['torch_template','torch_template/utils'],# 需要包含哪些包,也可以使用setuptools.find_packages()自动搜索

classifiers=[

"Development Status :: 3 - Alpha",

"Programming Language :: Python :: 3",

"License :: OSI Approved :: MIT License",

"Operating System :: OS Independent"

],# 版本、语言、使用许可等信息

python_requires='>=3.5',# 要求的python版本

)

创建 Readme.md 和 LICENSE

这一步和在GitHub创建相同,所以省略,详细可以看参考链接。

生成发行版文件

先安装wheel

pip3 install --user --upgrade setuptools wheel

1

2

pip3install--user--upgradesetuptoolswheel

运行以下命令

python3 setup.py sdist bdist_wheel

1

2

python3setup.pysdistbdist_wheel

会在项目根目录生成一个dist目录,并在dist目录下生成两个文件。

dist/

example_pkg_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl

example_pkg_YOUR_USERNAME_HERE-0.0.1.tar.gz

1

2

3

4

dist/

example_pkg_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl

example_pkg_YOUR_USERNAME_HERE-0.0.1.tar.gz

上传发行版文件

安装twine(用来把打包好的文件上传到pypi)

pip3 install --user twine

1

2

pip3install--usertwine

上传到测试版pypi(需要先在TestPypi注册一个账号,和PyPi是独立的)

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

1

2

twineupload--repository-urlhttps://test.pypi.org/legacy/dist/*

上传成功后,可以在TestPyPi上看到自己的项目

Uploading distributions to https://test.pypi.org/legacy/

Enter your username: [your username]

Enter your password:

Uploading example_pkg_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl

100%|█████████████████████| 4.65k/4.65k [00:01<00:00, 2.88kB/s]

Uploading example_pkg_YOUR_USERNAME_HERE-0.0.1.tar.gz

100%|█████████████████████| 4.25k/4.25k [00:01<00:00, 3.05kB/s]

1

2

3

4

5

6

7

8

Uploadingdistributionstohttps://test.pypi.org/legacy/

Enteryourusername:[yourusername]

Enteryourpassword:

Uploadingexample_pkg_YOUR_USERNAME_HERE-0.0.1-py3-none-any.whl

100%|█████████████████████|4.65k/4.65k[00:01<00:00,2.88kB/s]

Uploadingexample_pkg_YOUR_USERNAME_HERE-0.0.1.tar.gz

100%|█████████████████████|4.25k/4.25k[00:01<00:00,3.05kB/s]

使用pip安装自己的包

pip3 install -i https://test.pypi.org/simple/ example-pkg-YOUR-USERNAME-HERE

1

2

pip3install-ihttps://test.pypi.org/simple/example-pkg-YOUR-USERNAME-HERE

安装成功后检查是否已经成功安装,打开python终端

python

1

2

python

运行

>>> import example_pkg

1

2

>>>importexample_pkg

如果没有报错说明安装成功了,注意不要在项目目录下打开python终端,因为项目文件中的相对路径中有example_pkg,可能是使用了相对路径导包而不是成功导入系统包。

上传到pypi

OK,一切都已经测试完毕了,最后,运行下面的命令将发行版本上传到PyPi(要先注册一个PyPi账号)

twine upload dist/*

1

2

twineuploaddist/*

使用pip安装:

pip3 install -i https://pypi.org/simple/ example-pkg

1

2

pip3install-ihttps://pypi.org/simple/example-pkg

这时要使用官方源安装,因为刚上传上去,国内源(清华、中科大、阿里等)还没有和官方源同步。

注意每个版本号是唯一的,上传成功后上传的版本号即被用久占用,以后同一个包不能再使用这个版本号(即使把原来的删除了也不可以)。

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值