因为没有人做过覆盖OP的这个问题尚未:
我想什么要做到:
做一个Python模块安装,能够与“画中画安装...”
这是一个绝对的小例子,显示了准备和使用上传包的PyPI的基本步骤setuptools
和twine
。
这绝不是reading at least the tutorial的替代品,它比这个非常基本的例子中涵盖的要多得多。
创建包本身已经被其他的答案覆盖在这里,让我们假设我们有一个步覆盖,我们的项目结构是这样的:
.
└── 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='[email protected]',
keywords=['example'],
url='https://github.com/bgse/hellostackoverflow'
)
既然我们已经设置license='MIT'
,我们包括为LICENCE.txt
项目副本,一起在新结构化自述文件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
这将创建我们的分发包和蛋的信息,并导致在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。
因为我们不想污染与我们的实验中的资料库,我们创建了testing repository一个帐户,并上传过程中安装twine
:
pip install twine
现在,我们快到了,我们的帐户创建,我们简单地告诉twine
上传我们的包,它会要求我们的凭据并上传我们的包到指定仓库:
twine upload --repository-url https://test.pypi.org/legacy/ dist/*
我们现在可以登录我们的的PyPI笔账EST库,并在我们新上传包了一阵惊叹,然后用pip
抓住它:
pip install --index-url https://test.pypi.org/simple/ hellostackoverflow
正如我们所看到的,基本的过程也不是很复杂。正如我刚才所说,除此之外还有很多其他的内容,所以请继续阅读read the tutorial以获得更深入的解释。
我会从[教程的第6章(2.7)](http://docs.python.org/2/tutorial/modules.html)或[here for 3.x](http:// docs.python.org/3/tutorial/modules.html)在[python模块教程](http://www.google.com/search?q=python+module+tutorial)搜索互联网,你会发现很多别人的。 –
没有人回答pip部分 –