python3项目-Python3基础教程(十九)—— 项目结构

本文介绍了完整的Python项目结构,包括创建项目目录、模块文件,编写MANIFEST.in和setup.py文件以创建源代码压缩包或安装软件。还阐述了如何创建源文件发布版本,以及将项目上传到Python Package Index(PyPI)的TestPyPI和PyPI服务的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节阐述了一个完整的 Python 项目结构,你可以使用什么样的目录布局以及怎样发布软件到网络上。

创建Python项目

我们的实验项目名为 factorial,放到 /home/shiyanlou/factorial 目录:

$ cd /home/shiyanlou$mkdir factorial$ cd factorial/

我们给将要创建的 Python 模块取名为 myfact,因此我们下一步创建 myfact 目录。

$mkdir myfact$ cd myfact/

主代码将在 fact.py 文件里面。

"myfact module"

deffactorial(num):"""返回给定数字的阶乘值

:arg num: 我们将计算其阶乘的整数值

:return: 阶乘值,若传递的参数为负数,则为 -1"""

if num >=0:if num ==0:return 1

return num * factorial(num -1)else:return -1

我们还有模块的 __init__.py 文件,内容如下:

from fact importfactorial__all__ = [factorial, ]

我们还在 factorial 目录下添加了一个 README.rst 文件。因此,目录结构看起来像下面这样:

1365470-20190221155256341-1146424098.png

MANIFEST.in

现在我们要写一个 /home/shiyanlou/factorial/MANIFEST.in 文件,它用来在使用 sdist 命令的时候找出将成为项目源代码压缩包一部分的所有文件。

include *.py

include README.rst

如果你想要排除某些文件,你可以在这个文件中使用 exclude语句。

安装python-setuptools包

$ sudo pip3 install setuptools

setup.py

最终我们需要写一个 /home/shiyanlou/factorial/setup.py,用来创建源代码压缩包或安装软件。

#!/usr/bin/env python3

"""Factorial project"""

from setuptools importfind_packages, setup

setup(name= 'factorial', #注意这里的name不要使用factorial相关的名字,因为会重复,需要另外取一个不会与其他人重复的名字

version = '0.1',

description= "Factorial module.",

long_description= "A test module for our book.",

platforms= ["Linux"],

author="ShiYanLou",

author_email="support@shiyanlou.com",

url="https://www.shiyanlou.com/courses/596",

license= "MIT",

packages=find_packages()

)

name 是项目名称,version 是发布版本,description 和 long_description 分别是项目介绍,项目长描述。platforms是此模块的支持平台列表。find_packages() 是一个能在你源目录下找到所有模块的特殊函数,packaging docs。

要创建一个源文件发布版本,执行以下命令。

$ python3 setup.py sdist

执行完毕会返回类似下面的信息:

running sdist

running egg_info

creating factorial.egg-info

writing factorial.egg-info/PKG-INFO

writing top-level names to factorial.egg-info/top_level.txt

writing dependency_links to factorial.egg-info/dependency_links.txt

writing manifest file 'factorial.egg-info/SOURCES.txt'

reading manifest file 'factorial.egg-info/SOURCES.txt'

reading manifest template 'MANIFEST.in'

writing manifest file 'factorial.egg-info/SOURCES.txt'

running check

creating factorial-0.1

creating factorial-0.1/factorial.egg-info

creating factorial-0.1/myfact

making hard links in factorial-0.1...

hard linking MANIFEST.in -> factorial-0.1

hard linking README.rst -> factorial-0.1

hard linking setup.py -> factorial-0.1

hard linking factorial.egg-info/PKG-INFO -> factorial-0.1/factorial.egg-info

hard linking factorial.egg-info/SOURCES.txt -> factorial-0.1/factorial.egg-info

hard linking factorial.egg-info/dependency_links.txt -> factorial-0.1/factorial.egg-info

hard linking factorial.egg-info/top_level.txt -> factorial-0.1/factorial.egg-info

hard linking myfact/__init__.py -> factorial-0.1/myfact

hard linking myfact/fact.py -> factorial-0.1/myfact

Writing factorial-0.1/setup.cfg

creating dist

Creating tar archive

removing 'factorial-0.1' (and everything under it)

我们能在 dist 目录下看到一个 tar 压缩包。

$ ls dist/factorial-0.1.tar.gz

记住尝试安装代码时使用 virtualenv。

执行下面的命令从源代码安装。

$ sudo python3 setup.py install

Python Package Index(PyPI)

你还记得我们经常使用的 pip 命令吗?有没有想过这些包是从哪里来的?答案是 PyPI。这是 Python 的软件包管理系统。

1、创建账号

首先在这个链接注册账号。你会收到带有链接的邮件,点击这个链接确认你的注册。

创建 ~/.pypirc 文件,存放你的账号详细信息,其内容格式如下:

[distutils]

index-servers = pypi

testpypi

[pypi]

repository: https://upload.pypi.org/legacy/

username:

password:

[testpypi]

repository:https://test.pypi.org/legacy/

username:

password:

替换 和 为您新创建的帐户的详细信息。在这里,由于我们是到 testpypi的网页上去注册账号,即将相应的服务上传到 testpypi,所以在这里,你只需修改[testpypi]的用户名和密码

记得在 setup.py 中更改项目的名称为其它的名字来测试下面的指令,在接下来的命令中我将项目名称修改为factorial2,为了不重复,大家需要自行修改至其它名称(不要使用 factorial 和 factorial2,因为已经被使用了),本人用的factorial101。

2、上传到 TestPyPI 服务

下一步我们会将我们的项目到 TestPyPI 服务。这通过 twine 命令完成。

我们也会使用 -r 把它指向测试服务器。

$sudo pip3 install twine$ twine upload dist/* -r testpypi

执行完毕会返回类似下面的信息:

Uploading distributions to https://test.pypi.org/legacy/Uploading factorial101-0.1.tar.gz

现在如果你浏览这个页面,你会发现你的项目已经准备好被别人使用了。

1365470-20190221160247032-1266673684.png

在这里你也可以使用下面的命令上传到 PyPI 服务上,但这里需要注意,在 ~/.pypirc 里面,你需要到 https://pypi.python.org页面,按照上面的步骤去注册一个账号,然后到~/.pypirc 的 [pypi] 下填写相应的用户名和密码。testpypi 和 pypi 的账号密码并不通用。

$ twine upload dist/* -r pypi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值