Necesito instalar un paquete desde PyPi directamente dentro de mi script. Tal vez hay alguna función de módulo o distutils( distribute, pipetc.) que me permite ejecutar algo así pypi.install('requests')y las solicitudes se instalarán en mi virtualenv.
python
pip
python-module
pypi
chuwy
fuente
fuente

pipnunca es una buena idea: el mero hecho de que todo su contenido esté en la_internalversión 10 ...pip._internalno está diseñado para ser importable, puede hacer cosas absolutamente al azar cuando se importa en otro programa.Respuestas:
La forma oficialmente recomendada de instalar paquetes desde un script es llamando a la interfaz de línea de comandos de pip a través de un subproceso. La mayoría de las otras respuestas presentadas aquí no son compatibles con pip . Además, desde pip v10, todo el código se ha movido a
pip._internalprecisamente para dejar en claro a los usuarios que el uso programático de pip no está permitido.Úselo
sys.executablepara asegurarse de que invocará lo mismopipasociado con el tiempo de ejecución actual.fuente
También puedes usar algo como:
fuente
pip.main()como lo haría en la línea de comando (pero con cada opción como una entrada separada en la lista, en lugar de una sola cadena). Y para especificar qué versión del paquete desea, haga lo mismo que en la línea de comando. Ej:pip.main(['install', 'pip==7.1.0'])from pip._internal import main as pipmainentonces puedes usarlopipmain()como el obsoletopip.main()ver stackoverflow.com/questions/43398961/…Si desea usar
pippara instalar el paquete requerido e importarlo después de la instalación, puede usar este código:Si instaló un paquete como usuario, puede encontrar el problema de que no puede simplemente importar el paquete. Consulte ¿Cómo actualizar sys.path? para informacion adicional.
fuente
imp.reload(site)meRuntimeError: dictionary changed size during iterationpip uninstall <package_name>. Todavía puedo desinstalarlo usando,pip.mainpero solo quería saber dónde instala el paquete.pip install requests[security]:? No estaba seguro de si definiría correctamente los globales correctamente.pip.mainYa no funciona. pip.pypa.io/en/latest/user_guide/#using-pip-from-your-programEsto debería funcionar:
fuente
[sys.executable, '-m', 'pip', 'install', name]es asegurarse de obtener el pip "correcto" aquí.Agregué algo de manejo de excepciones a la respuesta de @ Aaron.
fuente
subprocess.callmodo que el código podría fallar.Usted define el módulo dependiente dentro de setup.py de su propio paquete con la opción "install_requires".
Si su paquete necesita que se genere algún script de consola, puede usar el punto de entrada "console_scripts" para generar un script de envoltura que se colocará dentro de la carpeta 'bin' (por ejemplo, de su entorno virtualenv).
fuente