2017-04-06 101 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謝謝,更新了答案。 –