2010-09-08 12 views
24

Come è possibile specificare le dipendenze opzionali in un file di requisiti pip? Secondo lo pip documentation questo è possibile, ma la documentazione non spiega come farlo e non trovo alcun esempio sul web.Dipendenze opzionali in un file di requisiti pip

+0

Grande Q. - un q correlato. sarebbe come definire una serie di requisiti che dovrebbero essere tentati di installare, ma non considerare l'installazione un errore se non possono essere installati. Ho un pacchetto che funziona meglio se è installato numpy ma ha un fallback se numpy non può essere compilato per qualche motivo. Mi piacerebbe renderlo un predefinito installato, ma opzionale se il requisito non è riuscito. –

risposta

26

Invece di specificare dipendenze opzionali nello stesso file dei requisiti rigidi, è possibile creare un optional-requirements.txt e un requirements.txt.

Per esportare i pacchetti del vostro ambiente corrente in un file di testo, si può fare questo:

pip freeze > requirements.txt 

Se necessario, modificare il contenuto della requirements.txt per rappresentare accuratamente le dipendenze del vostro progetto. Poi, per installare tutti i pacchetti in questo file, eseguire:

pip install -U -r requirements.txt 

-U dice pip per aggiornare i pacchetti alla versione più recente, e -r dice di installare tutti i pacchetti in requirements.txt.

+1

Penso che tu abbia frainteso la domanda. 'pip freeze' stamperà solo tutte le dipendenze. Quello che voglio sapere è come posso specificare quali dipendenze sono richieste e quali sono opzionali nel file dei requisiti del pip. – del

+0

Vedo il riferimento nella documentazione a cui penso si stia riferendo, ma non sono sicuro che sia possibile in un file di requisiti ... anche se potresti avere due file di dipendenza, uno che elenca le dipendenze opzionali. Modificherò la mia risposta –

+0

Grazie - questo è l'approccio che stavo già prendendo, ma leggere il bit sulle dipendenze opzionali nel doc mi ha fatto pensare che ci potrebbe essere un modo migliore per farlo. – del

2

Si stanno fraintendendo i documenti; non sono chiari come potrebbero essere. Il punto nei documenti è che con un file di requisiti puoi sentirti libero di specificare il tuo set di pacchetti di lavoro completo raccomandato, incluse sia le dipendenze necessarie che quelle opzionali. È possibile aggiungere commenti (linee che iniziano con #) per distinguere i due dagli umani, ma pip non fa distinzioni. Puoi anche avere due file di requisiti, come suggerisce Daniel.

+5

Non sei veramente libero di includere sia le dipendenze obbligatorie che quelle opzionali in un file di requisiti perché "pip install" si interromperà immediatamente se uno dei pacchetti nel file non si installa. Sembra che l'utilizzo di due file di requisiti separati sia l'unica soluzione corretta. – del

4

Nel 2015 PEP-0508 definito un modo per specificare le dipendenze opzionali in requirements.txt:

requests[security] 

Ciò significa che yourpackage esigenze requests per la sua opzione di protezione. Puoi installarlo come:

pip install yourpackage[security] 
+0

Puoi configurare uno di questi "extra" usando l'argomento ['extras_require'] (http://setuptools.readthedocs.io/en/latest/setuptools.html#declaring-extras-optional-features-with-theirown -dipendenze) per la funzione 'setup' in' setuptools'. Puoi vedere in [le richieste setup.py] (https://github.com/requests/requests/blob/3c1d36b827417fdeaf5a1c106129de30dac371d7/setup.py#L98) come viene configurato 'sicurezza'" extra ". –

Problemi correlati