¿Cómo instalo los requisitos internos para los proyectos de Python Heroku?

Tenemos algunas bibliotecas internas que hemos separado (por varias razones, en su mayoría administrativas o para tener la posibilidad de abrirlas fácilmente después). Viven en repositorys privados de Github, si eso importa.

Me gustaría desplegar una aplicación en Heroku para probarlo. Depende de una de esas bibliotecas.

Se supone que debo especificar mis dependencias en Requirements.txt. Eso es fácil para las cosas instalables en PyPI, pero ¿qué hago para estas dependencias internas?

Podría ejecutar mi propio espejo PyPI privado que tiene estas cosas, o podría usar paquetes editables (aunque la documentación diga que no deberían usarse en producción).

¿Cuál es la forma adecuada de hacerlo?

GitHub permite la autenticación HTTP básica en los repositorys de Git.

Entonces, puedes agregar una línea como esta:

-e git+https://username:password@github.com/kennethreitz/requests.git@v0.10.0#egg=requests 

Y todo funcionará correctamente 🙂

En requirements.txt puede citarse como sigue.

git+git://github.com/kracekumar/blaze.git

Mientras tanto, puede clonar la biblioteca y crear un entorno virtual e instalarlo dentro del env. El centro de desarrollo de Heroku tiene artículos que incluyen configuración de env virtual.

Puede escribir, diga, “-e git + ssh: //git@…/PIL#egg=PIL” en lugar de “PIL” en su archivo Requirements.txt y lo obtendrá de allí.

Sin embargo, esto requerirá que especifique de alguna manera la clave privada ssh que usará Heroku al tirar.

Hay un buildpack para esto: https://elements.heroku.com/buildpacks/debitoor/ssh-private-key-buildpack

Hacer esto:

 $ heroku buildpacks:set --index 1 https://github.com/debitoor/ssh-private-key-buildpack.git $ heroku buildpacks:add heroku/python $ heroku config:set SSH_KEY="$(cat path/to/your/keys/id_rsa | base64)" 

Ahora agregue la clave ssh dada a github y puede usar esas dependencias “git+git@github.com” cuando se implementa en Heroku.