web-dev-qa-db-fra.com

Utiliser virtualenv avec sublime text 2

J'utilise sublime text 2 pour le développement python avec virtualenv!

Le système de construction standard sublime text 2 utilise l'installation standard python plutôt que mon virtualenv où mes packages sont installés.

Comment obtenir du texte sublime 2 à utiliser avec virtualenv? 

J'utilise actuellement le terminal pour activer mon environnement et exécuter mes scripts.

MISE À JOUR: Je ne l'ai jamais fait fonctionner, mais vu que j'utilise un flacon et qu'il se construit lorsque vous apportez un changement, ce n'est pas un gros problème

26
Rigobert Song

Vous pouvez également définir le chemin du système de construction sur le répertoire bin de votre virtualenv, comme suit:

"build_systems":
[
    {
        "selector": "source.python",
        "env": {"PYTHONPATH":"/Users/user/project"},
        "path":"/Users/user/work/myvirtualenv/bin:$PATH",
        "name": "Run virtualenv python",
        "cmd": ["python", "-u", "$file"],
        "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",

        "variants": [
            {   "name": "Run all Tests",
                "working_dir": "/Users/user/project",
                "cmd": ["nosetests"]
            } 
        ]
    }
]

Cela permet également à d'autres outils, tels que nose dans l'exemple, de trouver le binaire python correct à partir de virtualenv.

15
user1248490

Dans Windows cela fonctionne pour moi:

"build_systems":
[
    {
    "name": "Run Tests",
    "working_dir": "/path/to/to/your/Django_project",
    "cmd": ["/path/to/your/virtualenv/bin/python.exe", "manage.py", "test"]
    }
]
13
Alexander

Le système de construction de Sublime prend en charge les variables qui peuvent être utilisées avec les fichiers de projet Sublime pour rendre cela plus portable dans tous les projets. 

Si vos environnements virtuels se trouvent dans un emplacement standard, créez un nouveau fichier de projet (Projet -> Enregistrer le projet sous) dans le répertoire racine de votre projet juste au-dessus du répertoire de votre environnement virtuel. Ensuite, créez un nouveau fichier de construction avec quelque chose comme:

{

    "cmd": ["$project_path/venv/bin/python", "-u", "$file"]

}

Il semble que le reste se charge automatiquement - comme si vous aviez tapé ./venv/bin/python à partir de la ligne de commande - pas besoin de vous embrouiller avec les chemins, les variables d'environnement, etc. 

12
Russell Beattie

J'utilise Flask, mais je pense que cela s'applique à presque tous les cas.
Ma construction actuelle est la suivante: "benicio" est le répertoire de mon projet:

{
    "cmd": ["source ~/projs/benicio/venv/bin/activate && python ~/projs/benicio/benicio_tests.py"],
    "Shell": true
}
3
Dirtycoder

Désolé d’ajouter encore une autre réponse à cette question, mais cela m’a causé beaucoup de chagrin. 

Vous devez non seulement créer un système de compilation tel que:

"build_systems":
[
{
    "name": "Maths",
    "env": {"PYTHONPATH":"/home/nebffa/Desktop"},
    "path":"$project_path/bin",
    "cmd": ["$project_path/bin/python3.3", "-u", "$file"]
}
]

mais vous DEVEZ modifier un paramètre dans Sublime Text - allez dans Outils -> Construire le système -> "Maths". Dans mon cas, je dois choisir "Maths" car c'est ainsi que j'ai nommé mon système de construction. Si vous ne le faites pas, Sublime Text n'utilise pas votre système de construction !!

3
nebffa

Je viens de recevoir le texte sublime 3 pour travailler dans un environnement virtuel. Bien que l'OP ait spécifié ST2, tous ceux qui utilisent ST3 sont probablement plus comme moi. Grâce à user1248490 et Russell Beattie, je suis arrivé à ce qui suit:

{
    "Shell_cmd": "$project_path/vi_sys_pkgs/bin/python3 -u \"$file\"",
    "path": "$project_path/vi_sys_pkgs/bin",
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

Notez que "cmd" est maintenant "Shell_cmd" dans ST3. Voir ST3 blog

2
Randy Skretka

C’est ce que j’ai comme système de construction (en supposant que mon virtualenv soit créé sous la forme d’un dossier appelé «env» dans le répertoire de mon projet actuel). Cela signifie au moins que je n'ai pas besoin de changer constamment le système de construction entre les projets:

{
   "cmd": ["env/bin/python", "-u", "$file"]
}

J'ai enregistré ceci en tant que nouveau système de construction (Outils -> Construire le système -> Nouveau système de construction).

1
HHHH

Sous MAC OSX, cela fonctionne pour moi

{
"cmd": ["/your/virtualenv/bin/python", "-u", "$file"]
}

Ce que j'ai fait était de garder les choses simples:

Je suis allé au lecteur racine et j'ai créé un dossier python:

Sudo mkdir python

puis est allé là-bas et a créé le virtualenv

virtualenv --no-site-packages virtualenvname

puis créé un newbuild dans ST2 avec la commande ci-dessus et cela fonctionne

1
sojim

J'ai une réponse pour tous ceux qui utilisent Heroku et utilisent leur outil de contremaître, et cela fonctionne très bien. Créez simplement un nouveau système de compilation comme ceci:

{
    "cmd": ["foreman", "run", "python", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

Ceci extrait toutes les variables d’environnement disponibles pour Foreman, y compris la variable $ PATH de votre virtualenv, qui ajoute le virtual Python à votre chemin python.

0
Dan Gayle

En supposant que vous conserviez votre virtualenv spécifique au projet dans un dossier .env au niveau supérieur de votre projet.

  1. Sublime> Projet> Enregistrer le projet sous ... (si vous ne l'avez pas déjà fait. Cela vous permettra de définir des options de construction personnalisées pour le projet.
  2. Projet> Modifier le projet:

    {
       "folders":[
           {
               "path": ".",
               "folder_exclude_patterns": [".env"],
           }
       ],
       "build_systems":[
           {
               "name": "Run in VirtualEnv",
               "Shell_cmd": "source $project_path/.env/bin/activate && python -u $file"
           }
       ]
    }
    
  3. Outils> Construire le système> Exécuter dans VirtualEnv

  4. Outils> Construire

Veuillez noter que ceci a été testé avec Sublime Text 3.

0
Filipp Lepalaan

J'utilise ceci pour construire mon projet Flask. J'ai ajouté le code suivant à mes paramètres de projet: Projet -> Modifier le projet

{
     "folders":
     [
          {
               "path": "/C/MyDev/chilinzb/"
          }
     ],
     "build_systems":
    [
        {
            "name": "Flask",
            // activate the specific virtualenv for the project
            "cmd": ["C:/MyDev/virtualenvs/env_chilinzb/Scripts/python", "$file"]
        }
    ]
}

puis je passe dans mon fichier run.py et appuie sur Ctrl+B

0
happygoat

la source n’a pas fonctionné pour moi dans la construction de Lubuntu. , utilisez '.' ou un point au lieu de 'source'.

cela a fonctionné:

{

    "env": {
    "Django_SETTINGS_MODULE":"Django_project_name.settings",
    "PYTHONPATH":"/home/my_username/current/Django_project_name:/home/my_username/.virtualenvs/Django_project_name/lib/python2.7:/home/my_username/.virtualenvs/Django_project_name/lib/python2.7/site-packages/"
},
"working_dir":"$project_path",
"cmd":[". /home/my_username/.virtualenvs/Django_project_name/bin/activate && python $file"],
"Shell":true

}

0
davidj411

cela a fonctionné pour moi:

{
    "cmd": ["C:/Users/user/virtualenvs/env1/Scripts/python.exe", "-u", "$file"],
    "file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
    "selector": "source.python"
}

sauvegardé construire dans:

"C:\Users\user\AppData\Roaming\Sublime Text 2\Packages\User\"

comme 

"Python_env1.sublime-build"

Sélectionner

Tools> Build System> Python_env1

terminé!

en utilisant windows 8.1, st2

0
jes516

cette combinaison a très bien fonctionné: 2 étapes

1) ajoutez les 2 clés appropriées à la clé 'env'. A) Django_SETTINGS_MODULE B) PYTHONPATH

2) mettez à jour cmd pour refléter la version de python que vous souhaitez utiliser.

{

"env":{"Django_SETTINGS_MODULE":"my_project.settings",
    "PYTHONPATH":"d:\\Projects\\virts\\my_project\\Scripts;d:\\Projects\\virts\\my_project\\Lib;d:\\Projects\\virts\\my_project\\Lib\\site-packages;D:\\Projects\\my_project"
    },
"cmd": ["c:/Python27/python.exe","$file"]
}
0
davidj411