Como @sinoroc sugirió que la forma correcta de instalar un paquete a través de pip es usar un proceso separado, ya que pip puede causar el cierre de un hilo o puede requerir un reinicio del intérprete para cargar el nuevo paquete instalado, por lo que esta es la forma correcta de usar la API: subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'SomeProject'])
pero ya que Python permite para acceder a la API interna y usted sabe para qué está utilizando la API, de todas formas puede utilizar la API interna, por ejemplo si está creando su propio administrador de paquetes GUI con recursos alternativos como https://www.lfd.uci.edu/~gohlke/pythonlibs/
Seguir a soulution ESTÁ FUERA DE FECHA, en lugar de votar negativamente, sugiera actualizaciones. ver https://github.com/pypa/pip/issues/7498 para referencia.
ACTUALIZACIÓN :
desde pip versión 10.x no hay más
get_installed_distributions()
o
main
método bajo
import pip
uso en su lugar import pip._internal as pip
.
ACTUALIZACIÓN ca. v.18 get_installed_distributions()
ha sido eliminado. En su lugar, puede usar un generador freeze
como este:
from pip._internal.operations.freeze import freeze
print([package for package in freeze()])
# eg output ['pip==19.0.3']
Si desea utilizar pip dentro del intérprete de Python, intente esto:
import pip
package_names=['selenium', 'requests'] #packages to install
pip.main(['install'] + package_names + ['--upgrade'])
# --upgrade to install or update existing packages
Si necesita actualizar cada paquete instalado, use lo siguiente:
import pip
for i in pip.get_installed_distributions():
pip.main(['install', i.key, '--upgrade'])
Si desea detener la instalación de otros paquetes si falla alguna instalación, úsela en una sola pip.main([])
llamada:
import pip
package_names = [i.key for i in pip.get_installed_distributions()]
pip.main(['install'] + package_names + ['--upgrade'])
Nota : Cuando instala desde la lista en un archivo con -r
/ --requirement
parámetro, NO necesita la función open ().
pip.main(['install', '-r', 'filename'])
Advertencia : Algunos parámetros tan simples --help
pueden hacer que el intérprete de Python se detenga.
Curiosidad: al usarlo pip.exe
, de todas formas, usas el intérprete de Python y el módulo pip. Si desempaqueta pip.exe
o, pip3.exe
independientemente de si es python 2.xo 3.x, dentro está el MISMO archivo único __main__.py
:
# -*- coding: utf-8 -*-
import re
import sys
from pip import main
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(main())
pip
estará en el directorio de scripts de su instalación de Python, por lo que querrá agregarlo a su ruta. AñadirC:\Python32\scripts
a tuPATH
. Cambie la ruta según sea necesario según el lugar donde la instaló.