使用setup.py for Python分发多个包

2024-05-18 09:40:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试设置一些Python包,这些包将共享一组公共的“实用程序”,但需要能够将它们作为单独的“包”分发

/packages
    |-setup.py
    |-__init__.py
    |-MANIFEST.in
    |-com
    |    |-__init__.py
    |    |-company
    |    |    |-__init__.py
    |    |    |-subdir1
    |    |    |    |-__init__.py
    ...
    |-utilities
    |    |-__init__.py
    |    |-utils1.py
    |    |-utils2.py
    |    |-...
    |-package1
    |    |-__init__.py
    |    |-package1_1.py
    |    |-package1_2.py
    |    |-...
    |-package2
    |    |-__init__.py
    |    |-package2_1.py
    |    |-package2_2.py
    |    |-...

我希望能够使用setup.py来构建package1或package2,两者都应该包含相同的实用程序。

我发现的所有教程都使用一个简单的单个项目,这使得使用单个setup.py相当简单。但是如何从同一个目录(它是一个git存储库)结构中创建多个不同的包呢?目前,我正在使用package1_setup.py构建类似于以下内容的package1:

from setuptools import setup,find_packages
import sys, os

version = '0.1'

setup(name = 'package1',
      version = version,
      description = 'Package 1',
      author = 'Rob Marshall',
      author_email = 'rob.marshall17@gmail.com',
      url = None,
      packages = ["package1","utils","com"],
      include_package_data = True,
      zip_safe = False,
      entry_points = {
                      'console_scripts':[
                                         'tool1 = package1.package1_1:main',
                                         'tool2 = package1.package1_2:main',
                                         ],
                      },
      install_requires = [
                          'boto >= 2.40',
                          'python-swiftclient >= 3.2.0',
                          'fabric >= 1.13.0',
                          ],
      )

因此,当我想构建package1时,我会:

% python package1_setup.py sdist

它创建了一个可安装的源程序包,但有点“笨拙”,因为setup.py被称为package1_setup.py。这并不是悲剧,但我想知道是否有更好的方法来做到这一点。

谢谢

抢劫


Tags: inpyimport实用程序cominitmainversion
1条回答
网友
1楼 · 发布于 2024-05-18 09:40:34

我可能已经回答了自己的问题:如果将setup.py修改为使用:

packages = find_packages(),

并将目录结构更改为:

...
|-package1
|    |-setup.py
|    |-MANIFEST.in
|    |-com (symlink to ../com)
|    |-utilities (symlink to ../utilities)
|    |-package1
|    |    |-__init__.py
|    |    |-package1_1.py
|    |    |-package1_2.py
|    |    |-...

如果我将cd放入package1并执行以下操作:

% python setup.py sdist

它似乎正确地创建了分发。

抢劫

相关问题 更多 >