2017-03-17 2 views
4

Ich versuche, einige Python-Pakete einzurichten, die eine gemeinsame Gruppe von "Dienstprogrammen" teilen, aber in der Lage sein müssen, sie als separate "Pakete" zu verteilen. Angenommen, die folgende Struktur:Verteilen mehrerer Pakete mit setup.py für Python

/packages 
    |-setup.py 
    |-__init__.py 
    |-MANIFEST.in 
    |-com 
    | |-__init__.py 
    | |-company 
    | | |-__init__.py 
    | | |-subdir1 
    | | | |-__init__.py 
    ... 
    |-utilities 
    | |-__init__.py 
    | |-utils1.py 
    | |-utils2.py 
    | |-... 
    |-package1 
    | |-__init__.py 
    | |-package1_1.py 
    | |-package1_2.py 
    | |-... 
    |-package2 
    | |-__init__.py 
    | |-package2_1.py 
    | |-package2_2.py 
    | |-... 

Ich mag wäre in der Lage sein setup.py zu verwenden für den Bau entweder package1 oder Package2 beide die gleichen Dienstprogramme enthalten sollte.

Alle Tutorials, die ich gefunden habe, verwenden ein einfaches einzelnes Projekt, das die Verwendung einer einzelnen setup.py ziemlich einfach macht. Aber wie erstelle ich mehrere verschiedene Pakete aus dem gleichen Verzeichnis (es ist ein Git Repository) Struktur? Im Moment bin ich mit package1_setup.py package1 zu bauen, die ähnlich aussieht:

from setuptools import setup,find_packages 
import sys, os 

version = '0.1' 

setup(name = 'package1', 
     version = version, 
     description = 'Package 1', 
     author = 'Rob Marshall', 
     author_email = '[email protected]', 
     url = None, 
     packages = ["package1","utils","com"], 
     include_package_data = True, 
     zip_safe = False, 
     entry_points = { 
         'console_scripts':[ 
             'tool1 = package1.package1_1:main', 
             'tool2 = package1.package1_2:main', 
             ], 
         }, 
     install_requires = [ 
          'boto >= 2.40', 
          'python-swiftclient >= 3.2.0', 
          'fabric >= 1.13.0', 
          ], 
    ) 

Also, wenn ich package1 bauen will ich tun:

% python package1_setup.py sdist 

Welche eine installierbare Quellpaket erstellt, sondern etwas "peinlich", weil die setup.py Paket1_setup.py heißt. Nicht, dass das tragisch wäre, aber ich habe mich gefragt, ob es einen besseren Weg dafür gibt.

Danke,

Rob

Antwort

3

ich meine eigene Frage beantwortet haben: Wenn ich die setup.py ändern zu verwenden:

packages = find_packages(), 

und die Verzeichnisstruktur ändern:

... 
|-package1 
| |-setup.py 
| |-MANIFEST.in 
| |-com (symlink to ../com) 
| |-utilities (symlink to ../utilities) 
| |-package1 
| | |-__init__.py 
| | |-package1_1.py 
| | |-package1_2.py 
| | |-... 

Wenn ich dann cd in Paket1 und tun:

% python setup.py sdist 

Es scheint, die Verteilung korrekt zu erstellen.

Rob

Verwandte Themen