Python 打包:未安装子目录

Python packaging: subdirectories not installed

我有一个 Python 布局的项目

setup.py
foobar/
    __init__.py
    foo.py
    bar/
        __init__.py

foobar/__init__.py 显示

from . import foo
from . import bar

setup.py

from setuptools import setup

setup(
    name='foobar',
    version='0.0.1',
    packages=['foobar'],
    )

从源目录执行 import foobar 时,一切都按预期工作。但是,当通过 pip install . 安装包时,子文件夹 bar/ 安装,导致导入错误

ImportError: cannot import name bar

有什么提示吗?

显然要包含子包,您需要 find_packages():

from setuptools import setup, find_packages

setup(
    name='foobar',
    version='0.0.1',
    packages=find_packages()
    )

这也是the setuptools docs中推荐的。