【发布时间】:2020-10-29 00:07:01
【问题描述】:
(为了透明起见,这是对here提出的问题的后续处理)
我正在处理命名空间包似乎很适合的相关文件。我正在遵循packaging authority 中的指南,该指南在每个命名空间包中放置了一个 setup.py;
mynamespace-subpackage-a/
setup.py
mynamespace/
subpackage_a/
__init__.py
mynamespace-subpackage-b/
setup.py
mynamespace/
subpackage_b/
__init__.py
module_b.py
在我的测试中,创建了一个类似的项目。除了 setup.py 之外,我还为每个命名空间放置了单元测试、文档和其他内容(为了紧凑,我省略了一些目录。)。我使用 pyscaffold 来生成命名空间。
├── namespace-package-test.package1
│ ├── LICENSE.txt
│ ├── README.md
│ ├── setup.cfg
│ ├── setup.py
│ ├── src
│ │ └── pkg1
│ │ ├── cli
│ │ │ ├── __init__.py
│ │ │ └── pkg1_cli.py
│ │ └── __init__.py
│ └── tests
├── namespace-package-test.package2
│ ├── AUTHORS.rst
但是,我随后注意到 pyscaffold 可以选择在 putup 命令中创建命名空间包。
(venv) steve@PRVL10SJACKSON:~/Temp$ putup --force my-package -p pkg1 --namespace namespace1
(venv) steve@PRVL10SJACKSON:~/Temp$ putup --force my-package -p pkg1 --namespace namespace2
这会创建一个这样的文件夹结构;
├── AUTHORS.rst
├── CHANGELOG.rst
├── LICENSE.txt
├── README.rst
├── requirements.txt
├── setup.cfg
├── setup.py
├── src
│ ├── namespace1
│ │ ├── __init__.py
│ │ └── pkg1
│ │ ├── __init__.py
│ │ └── skeleton.py
│ └── namespace2
│ ├── __init__.py
│ └── pkg1
│ ├── __init__.py
│ └── skeleton.py
└── tests
├── conftest.py
└── test_skeleton.py
所以我很矛盾;我信任 pyscaffold 的团队,但它与包装当局的示例背道而驰。
- 这两种方法都有效吗?
- 是否有理由选择一种方法而不是另一种方法?
【问题讨论】: