gpt4 book ai didi

python - 使用 Python 的 setup.py 分发多个包

转载 作者:太空狗 更新时间:2023-10-29 18:32:10 25 4
gpt4 key购买 nike

我正在尝试设置一些 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。这并不是悲剧,但我想知道是否有更好的方法来做到这一点。

谢谢,

罗布

最佳答案

我可能已经回答了我自己的问题:如果我修改 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

它似乎正确地创建了发行​​版。

罗布

关于python - 使用 Python 的 setup.py 分发多个包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42859852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com