python - find_packages - ¿Cómo obtener argumentos pasados a setup.py desde pip con ''--install-option''?
setuptools find_packages (2)
Estoy utilizando el punto 1.4.1, intentando instalar un paquete desde una ruta local, por ejemplo:
pip install /path/to/my/local/package
Hace lo que quiero, que es más o menos el equivalente de ejecutar python /path/to/my/local/package/setup.py install
, pero me gustaría pasar algunas opciones / argumentos adicionales a la instalación de mi paquete setup.py .
Entiendo por la documentación de pip que esto es posible con la --install-option
option, por ejemplo:
pip install --install-option="--some-option" /path/to/my/local/package
Esta publicación del grupo de Google python-virtualenv sugiere que esto es posible.
Lo que no entiendo es cómo obtener el pass-in "--alguna opción" desde setup.py. Intenté buscar en sys.argv
, pero no importa lo que puse para "--install-option =", sys.argv
es siempre esto:
[''-c'', ''egg_info'', ''--egg-base'', ''pip-egg-info'']
¿Cómo puedo obtener los valores de las cosas pasadas como "--install-option" desde la instalación de pip?
Estaba teniendo este problema instalando pyside.
Necesitaba especificar la opción --qmake
.
Esta es la forma que necesita:
pip install --install-option="--qmake=/usr/lib64/qt4/bin/qmake" PySide
Necesita extender el comando de instalación con un comando personalizado propio. En el método de run
, puede exponer el valor de la opción a setup.py
(en mi ejemplo, uso una variable global).
from setuptools.command.install import install
class InstallCommand(install):
user_options = install.user_options + [
(''someopt'', None, None), # a ''flag'' option
#(''someval='', None, None) # an option that takes a value
]
def initialize_options(self):
install.initialize_options(self)
self.someopt = None
#self.someval = None
def finalize_options(self):
#print("value of someopt is", self.someopt)
install.finalize_options(self)
def run(self):
global someopt
someopt = self.someopt # will be 1 or None
install.run(self)
Registre el comando de instalación personalizado con la función de setup
.
setup(
cmdclass={
''install'': InstallCommand,
},
:
Parece que el orden de tus argumentos está apagado
pip install /path/to/my/local/package --install-option="--someopt"