请展示为python2.x创建python包的简单和最新的标准方法
以后我更喜欢用pip来安装这个软件包。
包应该包含一个类:
class hello:
def greet(self):
print "hello"一个人以后应该能够做以下事情:
pip install my_package-0.1.1....然后用它:
from my_package import hello
h = hello.hello()
h.greet()我想要的是:
我发现了几个方法,但我仍然不确定如何处理这个非常简单的、简化的情况(没有嵌套包、删除所有可以省略的文件和功能),这是现代的方法。
我希望这个问题能够进入社区wiki状态,这样你就不会得到任何分数,我会给出足够的时间,并在几天后标记一个被接受的答案,同时考虑投票和评论。
编辑:
我有一个第一个运行的例子,我想分享,我使用了马吕斯盖德米纳斯的答案。它并不包含应该存在的所有内容,但是它可以工作,因此它可以演示技术流程的核心。要增加更多必要的部分,请阅读下面的马吕斯的答案。
目录结构:
MyProject/
setup.py
my_package.py
README.txt
MANIFEST.insetup.py:
from setuptools.import setup
setup(name='MyProject',
version='0.1',
py_modules=['my_package'])my_package.py:
class hello:
def greet(self):
print "hello"MANIFEST.in:
include *.txt若要从此文件夹创建包,请进入文件夹MyProject并运行:
$ python setup.py sdist这将在子文件夹MyProject-0.1.tar.gz中创建一个文件dist/。将此文件复制到目标计算机上的文件夹。
在目标计算机上,在包含MyProject-0.1.tar.gz的文件夹中运行此命令
sudo pip install MyProject-0.1.tar.gz现在就有必要在目标机器上注销并重新登录,这样包就会被找到。之后,您可以使用python在目标机器上测试包:
$ python
>>> import my_package
>>> h = my_package.hello()
>>> h.greet()
hello
>>> 一旦成功,请记住添加其他必要的内容,见下面的马吕斯的答案。
发布于 2010-11-11 17:07:32
开始简单
最简单的单文件包:
MyProject/
setup.py
my_package.py最简单的setup.py:
from setuptools import setup
setup(name='MyProject',
version='0.1',
author='Your Name',
author_email='your.name@example.com',
license='MIT',
description='Example package that says hello',
py_modules=['my_package'])在包中包括额外的文件
接下来,您可能应该添加一个自述文件:
MyProject/
MANIFEST.in
README.rst
setup.py
my_package.py注意新文件-- MANIFEST.in。它指定源发行版中应该包括哪些非Python文件:
include *.rst人们会告诉你“哦,跳过清单,只需将文件添加到源代码管理,setuptools就会找到它们”。忽视这个建议,它太容易出错了。
使PyPI页面有用
让人们可以在上在线查看README.rst是很有用的。因此,请更改您的setup.py
from setuptools import setup
with open('README.rst') as f:
readme = f.read()
setup(name='MyProject',
...
description='Example package that says hello',
long_description=readme,
...)对更漂亮的页面使用ReStructuredText标记。使用
python setup.py --long-description | rst2html尽早捕获ReStructuredText错误。
包中有多个Python模块
一个文件不会很快就足够了,所以将它更改为一个包(混淆的术语警告: package与带有__init__ py的目录中的相同,而不是像可分发的自包含存档中的那样):
MyProject/
MANIFEST.in
README.rst
setup.py
my_package/
__init__.py
some_module.py并将setup.py更改为
from setuptools import setup, find_packages
with open('README.rst') as f:
readme = f.read()
setup(name='MyProject',
version='0.2',
author='Your Name',
author_email='your@email',
license='MIT',
description='Example package that says hello',
long_description=readme,
packages=find_packages())向公众公布
获得一个PyPI帐户 --你只需要做一次。
若要发布版本,请确保setup.py中的版本号是正确的,然后运行
python setup.py sdist register upload就这样。
告诉人们安装它
告诉他们
pip install MyProject(在setup.py中指定的名称与要安装()的name参数相同)
发布于 2010-11-11 15:20:19
以下内容是从远程教程复制的。
文件布局:
top
|-- package
| |-- __init__.py
| |-- module.py
| `-- things
| |-- cross.png
| |-- fplogo.png
| `-- tick.png
|-- runner
|-- MANIFEST.in
|-- README
`-- setup.py要使安装成为tarball,只需运行:
python setup.py sdist若要安装软件包,请使用pip或easy_install
pip install my_package-1.2.3.tar.bz2或
easy_install my_package-1.2.3.tar.bz2此外,您还可以将它上传到PyPI,首先注册它:
python setup.py register然后上传源tarball
python setup.py sdist upload您也可以上传二进制鸡蛋(尽管不是必需的):
python setup.py bdist_egg upload然后人们可以像这样安装它:
pip install my_package==1.2.3或,
easy_install my_package==1.2.3https://stackoverflow.com/questions/4155914
复制相似问题