2017-04-06 133 views
1

我与布局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'], 
    ) 

在做Python项目3210从源目录,它都按预期工作。然而,通过pip install .安装包时,子文件夹bar/安装,导致导入错误

ImportError: cannot import name bar 

任何提示?

+0

我认为bar是一个不是python文件的文件夹(.py) – shiva

+0

没错。为什么这会影响安装? –

+0

尝试此链接__init__.py http://stackoverflow.com/questions/1944569/how-do-i-write-good-correct-package-init-py-files – shiva

回答

2

显然包括子包中,你需要find_packages()

from setuptools import setup, find_packages 

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

这在the setuptools docs建议为好。

+0

确切的链接:https://setuptools.readthedocs .io/en/latest/setuptools.html#using-find-packages – deepelement

+0

@deepelement谢谢,更新了答案。 –