web-dev-qa-db-fra.com

Comment exporter virtualenv?

Je suis nouveau sur virtualenv mais je suis en train d’écrire l’application Django et je vais enfin devoir la déployer.

Supposons donc que mon application fonctionne sur mon virtualenv local où j'ai installé toutes les bibliothèques requises. Ce que je veux faire maintenant, c’est d’exécuter une sorte de script qui prend mon virtualenv, vérifie ce qui est installé à l’intérieur et produit un script qui installe toutes ces bibliothèques sur de nouvelles virtualenv sur une autre machine. Comment cela peut être fait? S'il vous plaît aider.

27
mnowotka

Vous ne copiez pas coller votre virtualenv. Vous exportez la liste de tous les paquets installés comme - 

pip freeze > requirements.txt

Poussez ensuite le fichier requirements.txt à l'emplacement où vous souhaitez déployer le code, puis faites ce que vous avez fait sur la machine dev 

$ virtualenv <env_name>
$ source <env_name>/bin/activate
(<env_name>)$ pip install -r path/to/requirements.txt

Et là vous avez tous vos paquets installés avec la version exacte.

Vous pouvez également consulter Fabric pour automatiser cette tâche, avec une fonction comme celle-ci - 

def pip_install():
    with cd(env.path):
        with prefix('source venv/bin/activate'):
            run('pip install -r requirements.txt')
63
Bibhas Debnath

S'il doit se trouver sur le même chemin, vous pouvez le télécharger et l'extraire sur une autre machine. Si toutes les mêmes dépendances, bibliothèques, etc. sont disponibles sur la machine cible, cela fonctionnera.

Vous pouvez installer virtualenvwrapper et essayer cpvirtualenv , mais les développeurs conseillent de rester prudent ici:

Attention

La copie des environnements virtuels n'est pas bien prise en charge. Chaque virtualenv contient des informations de chemin codées en dur, et il peut y avoir des cas où le code de copie ne sait pas qu'il doit mettre à jour un fichier particulier. Utilisation Avec précaution.

Je ne l'ai pas encore assez testé, mais je mettrai à jour cette fonctionnalité après avoir compris à quel point cela fonctionne (ou mal).

0
Shon Feder