因为还没有人讨论OP的这个问题:
我想做的是:
使用"pip install…"使python模块可安装
下面是一个绝对最小的示例,展示了使用setuptools和twine准备包并将其上传到PyPI的基本步骤。
这绝不是至少是阅读教程的替代品,它比这个非常基本的例子所涵盖的要多得多。
创建包本身已经在这里的其他答案中涵盖了,所以让我们假设我们已经涵盖了这一步,我们的项目结构是这样的:
.
└── 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',我们在我们的项目中包含了一个副本license .txt,以及一个在reStructuredText中的自述文件readme .rst:
.
├── LICENCE.txt
├── README.rst
├── setup.py
└── hellostackoverflow/
├── __init__.py
└── hellostackoverflow.py
在这一点上,我们已经准备好开始使用setuptools进行打包,如果我们还没有安装它,我们可以使用pip安装它:
pip install setuptools
为了做到这一点并创建一个源代码发行版,在我们的项目根文件夹中,我们从命令行调用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
正如我们所看到的,基本的过程并不是很复杂。正如我前面所说的,这里有很多内容,所以请继续阅读教程以获得更深入的解释。