Python setup.py:如何获取find_packages()来标识子目录中的软件包

时间:2019-01-29 22:39:51

标签: python pip setuptools setup.py distutils

我正在尝试创建一个setup.py文件,在该文件中find_packages()递归地找到软件包。在此示例中,foobarbaz是我要安装并在python路径上可用的所有模块。例如,我希望能够做import foo, bar, bazbar-packfoo-pack只是常规的非Python目录,其中将包含各种支持文件/目录(例如特定于相应模块的测试,自述文件等)。

├── bar-pack
│   └── bar
│       └── __init__.py
├── baz
│   └── __init__.py
├── foo-pack
│   └── foo
│       └── __init__.py
├── setup.py

然后说setup.py如下:

from setuptools import setup, find_packages
setup(
    name="mypackage",
    version="0.1",
    packages=find_packages(),
)

但是,当我运行python setup.py installpython setup.py sdist时,仅标识和打包了baz目录。

我可以进一步简化它,并运行以下命令,但是同样,仅标识baz

python -c "from setuptools import setup, find_packages; print(find_packages())"
['baz']

您知道我如何扩展find_packages()的搜索路径(或手动对搜索路径进行硬编码)吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

Setuptools的find_packages支持一个“ where”关键字(docs),并返回一个普通的旧列表。您可以使用它:

setup(
    ...
    packages=find_packages() + find_packages(where="./bar-pack") + find_packages(where="./foo-pack")
)

或者,您也可以手动列出它们。