[PYTHON] Führen Sie während der Installation eine beliebige Verarbeitung mit Setup-Tools durch

Beim Erstellen eines Python-Pakets mit setuptools hatte ich Probleme [1](# 1) </ sub>, weil ich das Verzeichnis beim Ausführen der Installation nicht an einen beliebigen Speicherort kopieren konnte, also habe ich es erzwungen. Ich versuchte es.

setup.py


# coding: utf-8
import setuptools
from setuptools.command.install import install
import shutil

#Erweitern Sie den Standardinstallationsbefehl
class my_install(install):
  description = "install myapp"
  
  #Fügen Sie die für Ihre Verarbeitung erforderlichen Optionen hinzu
  user_options = install.user_options + [
    ('my-data-dir=', 'd', "base directory for installing my data files." ),
  ]
  def initialize_options(self):
    self.my_data_dir = '/opt/myapp-data' #Standardwert festlegen
    install.initialize_options(self)

  def _pre_install(self):
    #Schreiben Sie, was Sie tun möchten
    shutil.copytree('./data',self.my_data_dir)

  def run(self):
    #Fügen Sie den gewünschten Prozess ein, bevor Sie den ursprünglichen Installationsprozess ausführen.
    self._pre_install()
    install.run(self)

  def get_outputs(self):
    # get_Ausgänge ist--Wird aufgerufen, wenn die Aufzeichnungsoption angegeben wird, und gibt eine Liste der Dateien und Verzeichnisse zurück, die während der Installation erstellt wurden.
    #Wenn Sie bei der Pip-Deinstallation etwas entfernen möchten, geben Sie es hier zurück.
    return install.get_outputs(self) + [self.my_data_dir]

setuptools.setup(
  name='myapp',
  version='1.0',
  description='my python application',
  author='kokm',
  author_email='xxx@xxx',
  url='http://xxx.xxx/yyy',

  #Ersetzen Sie den Installationsbefehl durch Ihren
  cmdclass={'install': my_install},
)

Erweitern Sie "setuptools.command.install" nach Belieben und übergeben Sie es als "cmdclass" -Parameter von "setup ()". das ist alles. Natürlich können andere Befehle als install auf die gleiche Weise erweitert werden.

Ausführungsmethode

Führen Sie setup.py normal aus. Die hinzugefügten Optionen spiegeln sich gut in der Ausgabe von setup.py install --help wider.

python


cd myapp
python setup.py install --my-data-dir=/opt/myapp-data

Beachten Sie bei der Verwendung von pip, dass die von Ihnen hinzugefügte Option nur dann erfolgreich ist, wenn Sie "--install-option" verwenden.

python


pip install --install-option='--my-data-dir=/opt/myapp-data' myapp-1.0.tar.gz
pip uninstall myapp

Referenz

http://pythoninside.com/en/source-code/2.7.5/distutils/command/install.py

1. Sie können mithilfe von install_data nach Dateien kopieren.

Recommended Posts

Führen Sie während der Installation eine beliebige Verarbeitung mit Setup-Tools durch
Führen Sie regelmäßig eine beliebige Verarbeitung mit Python Twisted durch