2012-02-02 7 views
8

Tenemos algunas bibliotecas internas que hemos dividido (por varias razones, en su mayoría administrativas o para tener la posibilidad de abrirlas más fácilmente). Ellos viven en repositorios privados de Github, si eso es importante.¿Cómo instalo los requisitos internos para los proyectos de Python Heroku?

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

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

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

¿Cuál es la forma adecuada de hacerlo?

Respuesta

7

GitHub permite la autenticación HTTP básica en repositorios Git.

Por lo tanto, se puede añadir una línea como la siguiente:

-e git+https://username:[email protected]/kennethreitz/[email protected]#egg=requests 

Y todo funcionará correctamente :)

+0

¡Impresionante! ¿Por qué dice Heroku que no deberías haber estado en tu archivo de requisitos? No veo el problema cuando se especifica manualmente una etiqueta/versión (o si tiene un proceso de desarrollo que significa que el maestro siempre es bueno para llevar). – lvh

+0

Porque los requisitos editables pueden romperse a veces. No heroku-specific :) –

+3

¿Pero cómo hago esto sin confirmar mi contraseña? – wkschwartz

1

En requirements.txt puede mencionar lo siguiente.

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

Mientras tanto se puede clonar la biblioteca y crear entorno virtual e instalar en el interior del env. Heroku dev center tiene artículos que incluyen la configuración de env virtual.

+0

¿Pero cómo ayuda eso para un repositorio privado? – lvh

+0

Si eso no funciona, puede instalarlo desde la fuente después de ejecutar 'scp'. – Kracekumar

0

Puede escribir, por ejemplo, "-e git + ssh: //[email protected]/PIL#egg=PIL" en lugar de "PIL" en su archivo requirements.txt y lo buscará desde allí .

Sin embargo, esto requeriría que especifiques de algún modo la clave privada ssh que utilizará heroku al tirar.

0

Hay una buildpack por sólo esto: https://elements.heroku.com/buildpacks/debitoor/ssh-private-key-buildpack

Haga 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 dada de ssh a github y puede usar esos "git + git" @ github.com "dependencias cuando se implementa en Heroku.

Cuestiones relacionadas