由于尚无人讨论过OP的这个问题:
我想做的是:
使用“ pip install ...”制作可安装的python模块
这是一个绝对的最小示例,显示了使用setuptools
和准备软件包并将其上传到PyPI的基本步骤twine
。
这绝不能代替阅读至少本教程,它比这个非常基本的示例所涵盖的内容要多得多。
在这里,其他答案已经涵盖了创建包本身,因此,让我们假设我们已经覆盖了这一步,并且我们的项目结构如下:
.
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
为了setuptools
用于打包,我们需要添加一个文件setup.py
,该文件进入我们项目的根文件夹:
.
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
至少,我们为包指定元数据,setup.py
如下所示:
from setuptools import setup
setup(
name='hellostackoverflow',
version='0.0.1',
description='a pip-installable package example',
license='MIT',
packages=['hellostackoverflow'],
author='Benjamin Gerfelder',
author_email='benjamin.gerfelder@gmail.com',
keywords=['example'],
url='https://github.com/bgse/hellostackoverflow'
)
设置好之后license='MIT'
,我们在项目中添加了一个副本,LICENCE.txt
在reStructuredText中添加了一个自述文件,如下所示README.rst
:
.
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
此时,我们准备开始使用进行打包setuptools
,如果尚未安装,可以使用以下命令进行安装pip
:
pip install setuptools
为了做到这一点并source distribution
在项目的根文件夹中创建一个,我们setup.py
从命令行调用我们,指定我们想要的sdist
:
python setup.py sdist
这将创建我们的分发程序包和egg-info,并导致这样的文件夹结构,我们的程序包位于dist
:
.
├── dist/
├── hellostackoverflow.egg-info/
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
至此,我们有了一个可以使用安装的软件包pip
,因此从我们的项目根目录开始(假设您具有本示例中的所有命名):
pip install ./dist/hellostackoverflow-0.0.1.tar.gz
如果一切顺利,我们现在可以打开一个Python解释器,我想在项目目录之外的某个地方说以避免任何混淆,然后尝试使用新的闪亮包:
Python 3.5.2 (default, Sep 14 2017, 22:51:06)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from hellostackoverflow import hellostackoverflow
>>> hellostackoverflow.greeting()
'Hello Stack Overflow!'
现在,我们已经确认该软件包已安装并且可以正常工作,我们可以将其上传到PyPI。
由于我们不想用我们的实验污染实时存储库,因此我们为测试存储库创建一个帐户,并twine
为上载过程进行安装:
pip install twine
现在我们快到了,创建帐户后,我们只需要告诉twine
我们上传软件包,它将要求我们提供凭据并将软件包上传到指定的存储库:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
现在,我们可以在PyPI测试库上登录我们的帐户,惊叹我们刚上传的软件包一段时间,然后使用pip
以下代码进行抓取:
pip install --index-url https://test.pypi.org/simple/ hellostackoverflow
我们可以看到,基本过程不是很复杂。正如我之前所说的,它所包含的内容远不止本文所述,因此请继续阅读本教程以获取更深入的说明。