Por lo general, he instalado paquetes de python a través de pip.
Para Google App Engine, necesito instalar paquetes en otro directorio de destino.
He intentado:
pip install -I flask-restful --target ./lib
pero falla con:
debe suministrar home o prefix / exec-prefix, no ambos
¿Cómo puedo hacer que esto funcione?

pip installoperaciones normales :(--targetmientras no arruinar por defectopip installcomportamiento?Creo que hay una solución más simple para este problema (Homebrew's Python en macOS) que no interrumpirá sus operaciones normales de pip.
Todo lo que tiene que hacer es crear un
setup.cfgarchivo en el directorio raíz de su proyecto, generalmente donde está su__init__.pyarchivo py principal o ejecutable. Entonces, si la carpeta raíz de su proyecto es:,/path/to/my/project/cree unsetup.cfgarchivo allí y coloque las palabras mágicas dentro:OK, ahora deberías poder ejecutar los comandos de pip para esa carpeta:
Este comando se ejecutará correctamente solo para esa carpeta. Simplemente copie
setup.cfga cualquier otro proyecto que pueda tener. No es necesario escribir un.pydistutils.cfgen su directorio de inicio.Una vez que haya terminado de instalar los módulos, puede eliminar
setup.cfg.fuente
setup.cfgdespués de la instalación. Me quemé durante 2 días enteros tratando de descubrir por qué mi entorno virtualenv estaba jodido, con errores comoCould not install packages due to an EnvironmentError: [Errno 1] Operation not permitted: '/bin/easy_install'. Extracción del archivo de instalación me devolvió la corduraEn OSX (mac), suponiendo una carpeta de proyecto llamada / var / myproject
cd /var/myprojectsetup.cfgy agrega[install] prefix=pip install <packagename> -t .fuente
-t .lugar de permanecer fuera del directorio. Esta manera funcionó para mí y la otra no, aunque no tengo idea de por qué.Otra solución * para los usuarios de Homebrew es simplemente usar a
virtualenv.Por supuesto, eso puede eliminar la necesidad del directorio de destino de todos modos, pero incluso si no lo hace, he encontrado
--targettrabajos por defecto (como en, sin crear / modificar un archivo de configuración) cuando está en un entorno virtual.* Digo solución; tal vez es solo otra motivación para usar meticulosamente los venvs ...
fuente
Llegué a errores con las otras recomendaciones
--install-option="--prefix=lib". Lo único que encontré que funcionó es usarPYTHONUSERBASEcomo se describe aquí .esto no es exactamente lo mismo
--target, pero en cualquier caso me sirve.fuente
Como se mencionó, este es un error conocido con pip & python instalado con homebrew.
Si crea un
~/.pydistutils.cfgarchivo con la instrucción "prefijo vacío", solucionará este problema pero interrumpirá las operaciones normales de pip.Hasta que este error se aborde oficialmente, una de las opciones sería crear su propio script bash que manejaría este caso:
Este script envuelve su comando y:
~/.pydistutils.cfgarchivo con la instrucción "prefijo vacío"~/.pydistutils.cfgarchivoEste script se puede cambiar y adaptar para satisfacer sus necesidades, pero se hace una idea. Y le permite ejecutar su comando sin pip de frenado. Espero eso ayude :)
fuente
Si está usando virtualenv *, puede ser una buena idea verificar
which pipque esté usando.Si ve algo como
/usr/local/bin/pipque se ha escapado de su entorno. Reactivar su virtualenv arreglará esto:VirtualEnv:
$ source bin/activateVirtualFish:
$ vf activate [environ]*: Uso virtualfish, pero supongo que este consejo es relevante para ambos.
fuente
Tengo un problema similar. Uso el indicador --system para evitar el error, ya que describo aquí en otro hilo donde explico el caso específico de mi situación. Publico esto aquí esperando que pueda ayudar a cualquiera que enfrente el mismo problema.
fuente