find_packages python pip setuptools

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"