为Python软件包分发“ bin”和“ tests”目录的正确方法是什么?

问题描述 投票:0回答:1

我创建了一个python包。

在一些互联网资源(包括https://github.com/pypa/sampleproject)的建议下,我已经像这样设置了目录结构:

root_dir
├── bin
│   └── do_stuff.py
├── MANIFEST.in
├── README.md
├── my_lib
│   ├── __init__.py
│   ├── __main__.py
│   └── my_lib.py
├── setup.cfg
├── setup.py
├── important_script.py
└── tests
    ├── __init__.py
    └── test_lib.py

我已在清单中包含testsbinimportant_script.py,并将include_package_data中的setup.py设置为True。

但是,运行pip install root_dir后,我看到它正确安装了my_lib,但是bintests只是直接放在Lib/site-packages中,就像它们是单独的软件包一样。

我根本找不到important_script.py,而且我认为它没有安装。

如何在安装中正确包含这些文件/目录?

编辑

因此,事实证明bintests目录直接放置在site-packages目录中是由我之前所做的事情引起的,但是我无法发现是什么。在某个时候,在我的build中生成了一个dist和一个root_dir目录(我假设是pip或setuptools吗?),此后我对该项目所做的任何更改实际上并未显示在已安装的软件包中。删除这些目录后,我不再能够重现该特定问题。但是,我仍然无法安装important_script.py

python pip setuptools distutils
1个回答
0
投票
示例项目既不分发bin也不分发tests,甚至不分发explicitly excludes tests

要包含tests,您应该使用binscripts(例如在示例项目中)。将此添加到您的scriptsentry_points通话中:

entry_points

要包含setup.py,您应该重组树以将目录setup()包含在包目录下:

scripts=['bin/do_stuff.py'],

© www.soinside.com 2019 - 2024. All rights reserved.