2017-04-06 2 views
1

J'ai un projet Python avec la mise en pageemballage Python: les sous-répertoires pas installé

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

Lorsque le foobar/__init__.py lit

from . import foo 
from . import bar 

et setup.py

from setuptools import setup 

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

Quand vous faites import foobar à partir du répertoire source, tout fonctionne comme prévu. Cependant, lors de l'installation du package via pip install ., le sous-dossier est bar/pas installé, ce qui conduit à l'erreur d'importation

ImportError: cannot import name bar 

Tous les conseils?

+0

Je pense que la barre est un dossier pas de fichier python (.py) – shiva

+0

C'est vrai. Pourquoi cela affecte-t-il l'installation? –

+0

essayez ce lien pour __init__.py http://stackoverflow.com/questions/1944569/how-do-i-write-good-correct-package-init-py-files – shiva

Répondre

2

Apparemment, d'inclure des sous-paquets, vous devez find_packages():

from setuptools import setup, find_packages 

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

Ceci est recommandé the setuptools docs aussi bien.

+0

Lien exact: https: //setuptools.readthedocs .io/fr/latest/setuptools.html # using-find-packages – deepelement

+0

@deepelement Merci, mis à jour la réponse. –