Python打包:未安装子目录

Nic*_*mer 8 python packaging setuptools setup.py

我有一个带有布局的Python项目

setup.py
foobar/
    __init__.py
    foo.py
    bar/
        __init__.py
Run Code Online (Sandbox Code Playgroud)

哪里foobar/__init__.py

from . import foo
from . import bar
Run Code Online (Sandbox Code Playgroud)

setup.py

from setuptools import setup

setup(
    name='foobar',
    version='0.0.1',
    packages=['foobar'],
    )
Run Code Online (Sandbox Code Playgroud)

在做import foobar从源目录,这一切都按预期工作.然而,通过安装包时pip install .,子文件夹bar/没有安装,导致导入错误

ImportError: cannot import name bar
Run Code Online (Sandbox Code Playgroud)

任何提示?

Nic*_*mer 18

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

from setuptools import setup, find_packages

setup(
    name='foobar',
    version='0.0.1',
    packages=find_packages()
    )
Run Code Online (Sandbox Code Playgroud)

这也是setuptools文档中的建议.

  • find_packages() 安装子目录,但导入仍然失败。 (4认同)