2016-11-27 5 views
1

Mein Repository enthält mein eigenes Python-Modul und ein Submodul zu einer seiner Abhängigkeiten, die eine eigene setup.py hat.Rufen Sie eine andere setup.py in setup.py

Ich möchte die Setupy.py der Abhängigkeit bei der Installation meiner eigenen lib aufrufen, wie ist es möglich?

Mein erster Versuch:

$ tree 
. 
├── dependency 
│ └── setup.py 
└── mylib 
    └── setup.py 


$ cat mylib/setup.py 
from setuptools import setup 

setup(
    name='mylib', 
    install_requires= ["../dependency"] 
    # ... 
) 

$ cd mylib && python setup.py install 
error in arbalet_core setup command: 'install_requires' must be a string or list of strings containing valid project/version requirement specifiers; Invalid requirement, parse error at "'../depen'" 

jedoch install_requires keine Pfade akzeptieren.

Mein zweiter Versuch war, dependency_links=["../dependency"] mit install_requires=["dependency"] zu verwenden, aber eine Abhängigkeit des gleichen Namens existiert bereits in Pypi, also versucht setsetools, diese Version anstelle von mir zu benutzen.

Was ist der richtige/sauberste Weg?

+0

Vielleicht ist dies möglich mit 'dependency_links' eine' file: // URL 'wie hier erklärt: https://stackoverflow.com/questions/32688688/how-to- write-setup-py-Einschluss-a-git-Repo-als-eine-Abhängigkeit. Können Sie die Abhängigkeit nicht umbenennen, wenn der Code unter Ihrer Kontrolle steht? – languitar

Antwort

0

Eine mögliche Lösung besteht darin, vor/nach dem Installationsprozess einen benutzerdefinierten Befehl auszuführen.

Ein Beispiel:

from setuptools import setup 
from setuptools.command.install import install 

import subprocess 

class InstallLocalPackage(install): 
    def run(self): 
     install.run(self) 
     subprocess.call(
      "python path_to/local_pkg/setup.py install", shell=True 
     ) 

setup(
    ..., 
    cmdclass={ 'install': InstallLocalPackage } 
)