Je suis totalement nouveau avec sublime3, mais je n'ai rien trouvé d'utile pour mon problème ...
J'ai différents virtualenvs (réalisés avec virtualenwrapper) et j'aimerais pouvoir spécifier quel venv utiliser avec chaque projet
Puisque j'utilise le plugin SublimeREPL pour avoir des builds personnalisés, comment puis-je spécifier quelle installation python avec laquelle construire mon projet?
par exemple, quand je travaille sur le projet A, je veux exécuter des scripts avec le python de venvA, et quand je travaille sur le projet B, je veux exécuter des choses avec venvB (en utilisant un script de construction différent)
désolé mon terrible anglais ...
J'espère que cela va dans le sens que vous imaginez. J'ai tenté de simplifier ma solution et de supprimer certaines choses dont vous n'avez probablement pas besoin.
Les avantages de cette méthode sont:
Faites-moi savoir si vous avez des questions ou si j'ai totalement raté le cap sur ce que vous cherchez à faire.
Ouvrez notre fichier de projet pour le modifier:
Project -> Edit Project
Ajoutez une nouvelle clé aux paramètres du projet qui pointe vers le virtualenv souhaité:
"settings": {
"python_interpreter": "/home/user/.virtualenvs/example/bin/python"
}
UNE "python_interpreter"
La clé des paramètres du projet est également utilisée par des plugins comme Anaconda .
Accédez au répertoire Packages
de Sublime Text:
Preferences -> Browse Packages...
Créez un nouveau fichier python pour notre plugin, quelque chose comme: project_venv_repls.py
Copiez le code python suivant) dans ce nouveau fichier:
import sublime_plugin
class ProjectVenvReplCommand(sublime_plugin.TextCommand):
"""
Starts a SublimeREPL, attempting to use project's specified
python interpreter.
"""
def run(self, edit, open_file='$file'):
"""Called on project_venv_repl command"""
cmd_list = [self.get_project_interpreter(), '-i', '-u']
if open_file:
cmd_list.append(open_file)
self.repl_open(cmd_list=cmd_list)
def get_project_interpreter(self):
"""Return the project's specified python interpreter, if any"""
settings = self.view.settings()
return settings.get('python_interpreter', '/usr/bin/python')
def repl_open(self, cmd_list):
"""Open a SublimeREPL using provided commands"""
self.view.window().run_command(
'repl_open', {
'encoding': 'utf8',
'type': 'subprocess',
'cmd': cmd_list,
'cwd': '$file_path',
'syntax': 'Packages/Python/Python.tmLanguage'
}
)
Ouvrez le fichier de raccourci clavier utilisateur:
Preferences -> Key Bindings - User
Ajoutez quelques raccourcis clavier pour utiliser le plugin. Quelques exemples:
// Runs currently open file in repl
{
"keys": ["f5"],
"command": "project_venv_repl"
},
// Runs repl without any file
{
"keys": ["f6"],
"command": "project_venv_repl",
"args": {
"open_file": null
}
},
// Runs a specific file in repl, change main.py to desired file
{
"keys": ["f7"],
"command": "project_venv_repl",
"args": {
"open_file": "/home/user/example/main.py"
}
}
Il existe un sublime package text3, nommé Virtualenv
, vous permettant de construire en utilisant le Python de votre virtualenv.
Il prend en charge toutes les versions de Python dans votre virtualenv, et fonctionne très bien pour moi (MacOS).
Pour l'installer, on vient command+Shift+P pour appeler le contrôle pacakge (installez-le si vous ne l'avez pas encore), puis tapez install
. Tapez ensuite virtualenv
, lorsque vous voyez qu'il apparaît, cliquez sur return pour l'installer.
Après l'avoir installé, sélectionnez Tools
-> Build System
-> Python + Virtualenv
. Ensuite, vous pouvez utiliser command + B pour exécuter vos projets Python.
Cliquez sur ici pour vérifier plus d'informations.
Vous recherchez des systèmes de construction personnalisés.
Dans la barre de menus, cliquez sur Tools -> Build Systems -> New Build System...
Remplissez le modèle qu'il donne et enregistrez-le sous n'importe quel nom de fichier se terminant par .sublime-build
dans votre dossier User
.
Voici la documentation pour créer des systèmes de construction personnalisés:
http://docs.sublimetext.info/en/latest/reference/build_systems.html
Je recommande de créer un système de construction personnalisé pour les scripts python, puis ajoutez des variantes pour chaque env virtuel que vous souhaitez. (Voir variantes http://docs.sublimetext.info/en/latest /reference/build_systems.html#variants )
Celui que vous créez un système de construction, vous pouvez les basculer de
Tools -> Build Systems
(s'il n'est pas détecté automatiquement) et utilisez la palette de commandes (par défaut ctrl + shift p) pour basculer entre les variantes.
Le seul "piège" est le "cmd"
paramètre pour décrire la commande à exécuter. Par défaut, il faut un tableau de chaînes pour s'exécuter en tant que commande, mais vous pouvez utiliser "Shell_cmd"
au lieu d'utiliser simplement une chaîne de la façon dont vous l'exécuteriez via la ligne de commande.
J'ai une alternative. Il suffit de créer un nouveau "Build System" qui fonctionne comme dans l'environnement virtuel. Ici, nous l'appelons "my_python". Le but est d'utiliser ce système de build pour exécuter mon script directement sans laisser de sublime. Tu dois:
preferences->Browse Packages
. Cela ouvrira un dossier sous lequel se trouvent les fichiers de configuration. Allez dans dir User
et créez un nouveau fichier nommé my_python.sublime-build
(composé du nom du système de génération suivi de .sublime_build
. Après cela, accédez à Tools -> Build System
et vous verrez une nouvelle option my_python
.Ajoutez les paramètres JSON suivants à ce fichier.
{
"Shell_cmd": "/Users/Ted/bsd/vector/.v_venv/bin/python -u \"$file\"",
"file_regex": "^[ ]*File \"(...*?)\", line ([0-9]*)",
"selector": "source.python"
}
À l'intérieur Shell_cmd
, changement /Users/Ted/bsd/vector/.v_venv/bin/python
vers le chemin de votre environnement virtuel python.
Ensuite, utilisez simplement la touche courte pour créer votre script.
Lorsque vous souhaitez modifier votre environnement virtuel, copiez simplement son chemin vers le fichier de configuration et tout est terminé. Peut-être que l'approche semble contenir beaucoup de travail, mais cela fonctionne bien et est pratique.