2010-11-09 31 views
4

me reste que cette structure:Python: pip installe des sous-paquets dans la racine dir

setup.py 
package 
    __init__.py 
    sub_package 
     ___init__.py 
    sub_package2 
     __init__.py 

Si j'installer le paquet via setup.py installer, il fonctionne comme apprécié (en copiant paquet entier sur le site-packages dir):

site_packages 
    package 
     sub_package 
     sub_package2 

Mais si j'exécutez INSTALL pip package, puis pip installe chaque sous-paquet comme paquet indépendant:

site-packages 
    package 
    sub_package 
    sub_package2 

Comment puis-je éviter cela? J'utilise find_packages() de setuptools pour spécifier des paquets.

+0

Pouvez-vous coller le contenu de setup.py? –

Répondre

7

NOTE: Cette réponse ne sera plus valable, il est seulement conservé pour des raisons historiques, la bonne réponse est d'utiliser en ce moment setuptools, plus d'infos https://mail.python.org/pipermail/distutils-sig/2013-March/020126.html


Tout d'abord je vous recommande de laisser tomber setuptools:

alt text

et utiliser soit distutils (ce qui est le standard mechanism to distribute Python packages) ou distribute vous avez également distutils2 mais je ne pense pas encore prêt, et pour la nouvelle norme here est une ligne directrice sur la façon d'écrire un setup.py.

Pour votre problème, le find_packages() n'existent pas dans les distutils et vous devrez ajouter votre forfait comme celui-ci:

setup(name='package', 
     version='0.0dev1', 
     description='blalal', 
     author='me', 
     packages=['package', 'package.sub_package', 'package.sub_package2']) 

Et si vous avez beaucoup de paquet et sous paquets que vous aurez faire du code qui crée la liste des paquets here est un exemple de source Django.

Je pense que l'utilisation distutils peut vous aider avec votre problème, et j'espère que cela peut aider :)

+0

Merci. S'il n'y aura pas moyen de rester avec setuptools je vais essayer distutils. –