【问题标题】:best tool for building python distro with dependencies/resources使用依赖项/资源构建 python 发行版的最佳工具
【发布时间】:2011-07-07 14:49:00
【问题描述】:

所以我一直在做一个 python 项目,并达到了我必须制作某种安装程序/分发的地步。现在这个项目有相当多的依赖和一些资源。到目前为止,我一直在努力创建 setup.py,但是像 scipy、matplotlib 甚至 numpy 这样的东西在 easy_install 方面存在一些问题。现在这应该是一个跨平台的安装程序/发行版/exe,但从 mac-os/linux 开始也可以。现在我搜索了一下,Enstaller 或 Distribute 似乎是 setuptools 的替代品,py2exe/pyinstaller 似乎也很有用。现在我真的不想开始和每一个都挣扎,也许一无所获,所以我的问题是,考虑到依赖项和资源的数量非常高,你对此有何建议?

问候, 波格丹

【问题讨论】:

    标签: python packaging setuptools


    【解决方案1】:

    我不知道这是否是您需要的,但对于 基于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 以获得详细的叙述解释(快速入门很有帮助)

    【讨论】:

    • 好吧,据我所知,我的一些依赖项不使用 disutils 进行分发,它们的安装是通过下载它们的包和 setup.py 安装完成的。我需要制作一个知道如何安装所有依赖项的安装程序,包括那些可以简单地使用 install_requires= ["psycopg2", "cherrypy", "sqlalchemy", "quantities", "scipy"] 安装的安装程序和那些可以安装的安装程序不要这么容易安装。您的任何建议都可以做到这一点吗?
    • pip 似乎比 setuptools 更好地处理大多数依赖项,但你能给我一个相当于标准 setup.py 的例子吗?
    猜你喜欢
    • 2012-09-18
    • 1970-01-01
    • 2011-07-14
    • 2018-08-31
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多