2012-02-02 31 views
8

Abbiamo alcune librerie interne che abbiamo suddiviso (per diverse ragioni, per lo più amministrative o per avere la possibilità di aprirle facilmente in seguito). Vivono in depositi Github privati, se questo è importante.Come installare i requisiti interni per i progetti Python Heroku?

Mi piacerebbe distribuire un'app a Heroku per provarlo. Dipende da una di quelle librerie.

Devo specificare le mie dipendenze in requirements.txt. È facile per le cose installabili con PyPI, ma cosa devo fare per queste dipendenze interne?

Potrei eseguire il mio mirror PyPI privato che ha questa roba, oppure potrei usare pacchetti modificabili (anche se la documentazione dice che non dovrebbero essere usati in produzione).

Qual è il modo appropriato per farlo?

risposta

7

GitHub consente l'autenticazione di base HTTP su repository Git.

Quindi, è possibile aggiungere una linea come questa:

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

e tutto funzionerà correttamente :)

+0

Fantastico! Perché Heroku dice che non dovresti avere -e è nel tuo file dei requisiti? Non vedo il problema quando specifichi manualmente un tag/release (o hai un processo di sviluppo che significa che il master è sempre buono da percorrere). – lvh

+0

Poiché i requisiti modificabili possono interrompersi a volte. Non specifico per heroku :) –

+3

Ma come faccio a farlo senza commettere la mia password? – wkschwartz

1

In requirements.txt si può menzionare come segue.

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

Nel frattempo è possibile clonare la libreria e creare un ambiente virtuale ed installare all'interno della ENV. Heroku dev center contiene articoli che includono impostazioni di virtual env.

+0

Come può essere utile per un repo privato? – lvh

+0

Se non funziona, è possibile installare dal sorgente dopo aver eseguito 'scp'. – Kracekumar

0

È possibile scrivere, ad esempio "-e git + ssh: //[email protected]/PIL#egg=PIL" invece di "PIL" nel proprio file requirements.txt e lo preleverà da lì .

Tuttavia, ciò richiederebbe in qualche modo di specificare la chiave privata ssh da utilizzare da heroku durante il pull.

0

C'è una buildpack proprio per questo: https://elements.heroku.com/buildpacks/debitoor/ssh-private-key-buildpack

Eseguire questa operazione:

$ 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)" 

Ora aggiungi la chiave ssh fornita a github e puoi usare quelle "git + git @ github.com "dipendenze durante la distribuzione in Heroku.

Problemi correlati