2010-11-09 1 views
4

У меня есть такая структура:Python: Пип устанавливает суб-пакетов в корневой директории

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

Если установить пакет установки с помощью setup.py, то он работает как оценили (копируя весь пакет сайта-пакеты Dir):

site_packages 
    package 
     sub_package 
     sub_package2 

Но если я бегу пип установить пакет, то пип устанавливает каждый суб-пакет как независимый пакет:

site-packages 
    package 
    sub_package 
    sub_package2 

Как я могу избежать этого? Я использую find_packages() из setuptools для указания пакетов.

+0

Вы можете вставить содержимое setup.py? –

ответ

7

ПРИМЕЧАНИЕ: Этот ответ не действует больше, он хранится только по историческим причинам, правильный ответ прямо сейчас, чтобы использовать Setuptools, подробнее https://mail.python.org/pipermail/distutils-sig/2013-March/020126.html


Прежде всего я буду рекомендовать отказаться Setuptools:

alt text

и использовать либо distutils (который является standard mechanism to distribute Python packages) или distribute у вас также есть distutils2, но я думаю, что еще не готов, а для нового стандарта here - это руководство по написанию файла setup.py.

Для вашей задачи find_packages() не существуют в Distutils и вам придется добавить свой пакет, как это:

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

И если у вас есть много пакетов и субтропических пакетов вы будете иметь для создания некоторого кода, который создает список пакетов here, является примером из источника Django.

Я думаю, что с помощью Distutils может помочь вам с вашей проблемой, и я надеюсь, что это может помочь :)

+0

Спасибо. Если не будет способа остаться с setuptools, я попробую distutils. –