用于构建具有依赖性/资源的python发行版的最佳工具

时间:2011-07-07 14:49:00

标签: python packaging setuptools

所以我一直在研究一个python项目,并且达到了我必须进行某种安装/分发的程度。现在这个项目有很多依赖项和一些资源。到目前为止,我正在努力创建一个setup.py但像scipy,matplotlib甚至numpy这样的东西都有一些easy_install的问题。现在这应该是一个跨平台的installer / distribution / exe,但是使用mac-os / linux也可以。现在我已经google了,Enstaller或Distribute似乎是setuptools的替代品,py2exe / pyinstaller似乎也很有用。现在我真的不想开始和每一个人一起努力,也许无处可去,所以我的问题是你考虑到依赖性和资源的数量相当高,你会推荐什么?

此致 波格丹

1 个答案:

答案 0 :(得分:3)

我不知道这是否是你需要的,但是对于基于python的包装

您可以使用pastescript生成setup.py(或制作项目框架/模板)

setup.py

的示例

简单

from setuptools import setup, find_packages

setup(
    name = "google killer",
    version = "0.1.0",
    url = 'http://example.com/',
    license = 'AGPL',
    description = 'best software ever',
    author = 'me',
    packages = find_packages('src'),
    package_dir = {'': 'src'},
    install_requires = ['numpy', 'scipy', 'sqlalchemy'],
)

复合物。由金字塔项目中的pastescript制作

import os

from setuptools import setup, find_packages

here = os.path.abspath(os.path.dirname(__file__))
README = open(os.path.join(here, 'README.txt')).read()
CHANGES = open(os.path.join(here, 'CHANGES.txt')).read()

requires = ['pyramid', 'WebError']

setup(name='test',
      version='0.0',
      description='test',
      long_description=README + '\n\n' +  CHANGES,
      classifiers=[
        "Programming Language :: Python",
        "Framework :: Pylons",
        "Topic :: Internet :: WWW/HTTP",
        "Topic :: Internet :: WWW/HTTP :: WSGI :: Application",
        ],
      author='',
      author_email='',
      url='',
      keywords='web pyramid pylons',
      packages=find_packages(),
      include_package_data=True,
      zip_safe=False,
      install_requires=requires,
      tests_require=requires,
      test_suite="test",
      entry_points = """\                                                                  
      [paste.app_factory]                                                                  
      main = test:main                                                                     
      """,
      paster_plugins=['pyramid'],
      )

你可以在大多数python项目中找到它们

另外,请阅读The Hitchhiker’s Guide to Packaging以获取详细的叙述说明(快速入门有帮助)