2013-07-11 4 views
0

J'utilise de nombreux paquets python comme numpy, bottleneck, h5py, ... pour mon travail quotidien sur mon ordinateur. Depuis que je suis root sur cette machine, il n'y a aucun problème pour installer ces paquets. Cependant je voudrais utiliser mon "environnement" de différents paquets également sur une machine de serveur où j'ai seulement un compte d'utilisateur normal. J'ai donc pensé à créer un environnement virtuel (avec virtualenv) sur ma machine en y installant tous les paquets nécessaires. Ensuite, je copie juste le dossier entier au serveur et peux courir tout de lui?Port Python virtualenv vers un autre système

Mon ordinateur utilise Fedora 19 alors que le serveur utilise Ubuntu. Est-ce un problème? Je n'ai trouvé aucune information sur la façon de déplacer un tel environnement virtuel vers un autre système. La raison pour laquelle je voudrais d'abord créer l'environnement virtuel sur ma machine est qu'il y a beaucoup d'outils manquants sur le serveur comme python-dev, donc je ne peux pas compiler numpy par exemple. J'ai regardé les distributions Anaconda et Enthought Python, mais elles n'incluent pas quelques paquets dont j'ai besoin. En outre, il devrait y avoir un moyen complètement "ouvert" pour ce problème?

Le déplacement de l'environnement virtuel vers le serveur a échoué car il se plaint de certains fichiers manquants lors de l'importation des packages. Ce n'est pas surprenant probablement ...

+1

Les réponses ne vous sont probablement pas utiles car vous ne pouvez pas compiler numpy sur la machine cible, mais [déplacer un virtualenv est pratiquement impossible] (http://stackoverflow.com/q/17554093/395760) . – delnan

+0

Eh bien, merci pour ce lien informatif. Je suppose que ce n'est vraiment pas possible. – HyperCube

+0

si les en-têtes de développement python sont manquants et que vous ne pouvez pas les installer sur tout le système (administrateur du serveur?), ce que vous pouvez faire est de compiler votre propre python (qui n'est pas * ce * difficile), puis de compiler numpy etc. Virualenv vous permet de spécifier le binaire python à utiliser. –

Répondre

4

Vous ne devriez pas déplacer votre virtualenv car il est essentiellement lié à votre système python et le binaire ne fonctionnera pas sur d'autres machines.

Toutefois ... vous pouvez exporter une liste de packages installés et les installer dans un autre fichier virtualenv via un fichier requirements.txt.

Fondamentalement, ce que je fais habituellement avec la plupart de mes projets:

# Generate a requirements file: 
pip freeze > requirements.txt 

Sur la nouvelle machine:

# This uses virtualenvwrapper, but you can do it without as well 
mkproject my_project_name 
git clone git://..../ . 
pip install -r requirements.txt 
+0

Merci, c'est déjà très utile pour moi! – HyperCube

1

Après avoir compilé manuellement VTK et PySide2 pour Python36, je me suis aussi trouvé de flexion les règles de virtualenv.

Encore aujourd'hui, j'ai transféré mon virtualenv vers un autre système, et pour simplifier les choses, je lui ai donné exactement le même chemin que sur le système précédent. Cependant, je n'avais pas le même chemin pour Python sur mon nouveau système. Heureusement, j'ai été capable de changer l'emplacement recherché par virtualenv en modifiant un fichier 'orig-prefix.txt' situé dans [VIRTUALENV]/Lib.

Le chemin Python de base un virtualenv nécessite est stocké dans: [VIRTUALENV]/Lib/orig-prefix.txt

Si je me souviens bien, le chemin du virtualenv lui-même est intégré dans plusieurs fichiers. Ainsi, dans le cas où je devais replacer virtualenv sur un chemin différent, je l'ai simplement recréé et copié sur tout sauf le répertoire [VIRTUALENV]/Scripts.

Ce n'est probablement pas la manière dont virtualenv est censé être utilisé, mais cela permet de contourner le problème. Notez également que je le fais dans un environnement Windows.

Questions connexes