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.
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
http://pythoninside.com/en/source-code/2.7.5/distutils/command/install.py
1. Sie können mithilfe von install_data nach Dateien kopieren.