下面是详细的“如何将Python代码打包成pip包”的攻略,包含以下几个步骤:
第一步:安装打包工具和构建工具
在打包python代码之前,我们需要安装一些打包工具和构建工具。其中主要有两个工具:setuptools和wheel。
安装setuptools:
pip install setuptools
安装wheel:
pip install wheel
第二步:创建setup.py文件
下一步,需要创建setup.py文件。这个文件是用来描述pip包的信息,包括包的名称,版本号等等。下面是一个简单的setup.py示例:
from setuptools import setup, find_packages
setup(
name='mypackage',
version='1.0.0',
packages=find_packages(),
include_package_data=True,
install_requires=[
'numpy>=1.11.1',
'click>=6.6'
],
entry_points='''
[console_scripts]
mycli=mypackage.cli:cli
'''
)
在这个示例中,我们声明了名称为“mypackage”的pip包,版本号为“1.0.0”,依赖于numpy和click。
注意:find_packages()
函数会自动寻找当前目录下可用的包,所以我们需要确保我们的代码是在一个包中的。
第三步:创建README.md文件
README.md文件是用来介绍我们的pip包的,它会在pip网站上显示。下面是一个简单的README.md示例:
# mypackage
mypackage is a Python package for doing something cool.
## Installation
Install via pip:
```bash
pip install mypackage
Usage
To use mypackage, simply:
from mypackage import myfunc
myfunc()
## 第四步:构建pip包
有了以上两个文件,我们就可以构建pip包了。在命令行下进入代码的根目录,然后输入以下命令:
```bash
python setup.py sdist bdist_wheel
其中,sdist命令用来构建源码包,bdist_wheel命令用来构建wheel包。
执行完毕后,我们可以找到一个dist目录,里面会包含我们的pip包。在这个例子中,我们会得到一个mypackage-1.0.0-py3-none-any.whl文件和一个mypackage-1.0.0.tar.gz文件。
第五步:上传pip包
最后一步,我们需要把pip包上传到pip网站。在上传pip包之前,我们需要先注册一个pypi账号。如果你已经注册了账号,可以使用以下命令上传pip包:
python -m twine upload dist/*
示例
下面是两个示例,分别是一个简单的函数和一个命令行工具:
函数示例
首先,我们编写一个简单的函数,在一个名为mypackage的包内的myfunc.py文件中:
def myfunc():
print('Hello World!')
然后,在mypackage包的根目录下,创建一个名为setup.py的文件:
from setuptools import setup, find_packages
setup(
name='mypackage-example',
version='1.0.0',
packages=find_packages(),
include_package_data=True
)
接下来,我们就可以构建pip包和上传pip包了。在根目录下执行以下命令:
python setup.py sdist bdist_wheel
python -m twine upload dist/*
最后,在另一个Python项目中,我们可以通过以下语句安装并使用这个示例:
pip install mypackage-example
from myfunc import myfunc
myfunc()
命令行工具示例
首先,我们创建一个命令行工具,在一个名为mypackage的包内的cli.py文件中:
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for _ in range(count):
click.echo(f'Hello, {name}!')
if __name__ == '__main__':
hello()
然后,在mypackage包的根目录下,创建一个名为setup.py的文件:
from setuptools import setup, find_packages
setup(
name='mypackage-cli-example',
version='1.0.0',
packages=find_packages(),
include_package_data=True,
install_requires=[
'click>=6.6'
],
entry_points='''
[console_scripts]
mycli=mypackage.cli:hello
'''
)
接下来,我们就可以构建pip包和上传pip包了。在根目录下执行以下命令:
python setup.py sdist bdist_wheel
python -m twine upload dist/*
最后,在命令行中,我们可以通过以下命令安装并使用这个示例:
pip install mypackage-cli-example
mycli --count=3 --name=John
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何将python代码打包成pip包(可以pip install) - Python技术站