I'm using vscode in Windows 10 as my code editor, and want to make an easy way to launch it with the correct conda env to allow debugging.
Currently I am having to open a command prompt, then activate the conda env, then paste the shortcut to vscode into the prompt to execute. Like so:
cmd
activate env-name
"C:\Program Files (x86)\Microsoft VS Code\Code.exe"
I have tried creating a batch file to wrap these calls, but unfortunately once I call "source activate" to start the conda env, the batch commands after this are not executed as it is considered another instance.
Any tips? Other than writing a vscode extension to handle this (which I'm seriously tempted to do, but it's such a simple problem...)
You might want to run source activate env-name as a task in visual studio.
https://code.visualstudio.com/Docs/editor/tasks
tasks.json
{
"version": "0.1.0",
"command": "cmd",
"isShellCommand": true,
"suppressTaskName": true,
"args": [],
"tasks": [
{
"taskName": "development",
"args": ["source", "activate", "env-name"]
}
]
}
The best option I found is to set the python.venvPath parameter in vscode settings to your anaconda envs folder.
"python.venvPath": "/Users/[...]/Anaconda3/envs"
Then if you bring up the command palette (ctl + shift + P on windows/linux, cmd + shift + P on mac) and type Python: Select Workspace Interpreter all your envs will show up and you can select which env to use.
The python extension will also need to be installed for the Select Workspace Interpreter option.
Note: The Select Workspace Interpreter takes around 10 seconds to come up on my computer using the current version of VSCode. My answer was originally posted here.
Using Conda 4.7.5, I was able to change the Target under the VsCode taskbar shortcut Properties from:
"C:\Users\Paul.siersma\AppData\Local\Programs\Microsoft VS Code\Code.exe"
To:
C:\Users\Paul.siersma\Anaconda3\_conda.exe run -p C:\Users\Paul.siersma\Anaconda3 "C:\Users\Paul.siersma\AppData\Local\Programs\Microsoft VS Code\Code.exe"
This uses the run command (marked experimental) and starts VSCode using the base Conda environment. You could specify another environment by changing the -p flag to the environment location eg -p [..]\Anaconda3\envs\myenv
Related
I have a fairly large python/c++ program that runs as follow:
. set_env.sh -option A -option B
python run.py
The set_env.sh script modifies the PYTHONPATH and does all sort of export in order to point to the right c++ program.
When running these two commands in the terminal, that works just well, however, using the debugger breaks it all.
I try running ". set_env.sh -option A -option B" in preLaunchTask but it seems the debugger can't see the new PYTHONPATH.
How can I make the debugger run the the set_env and consider the new PYTHONPATH ?
I had a similar problem and could solve it by setting environment variables in the "env" field of the launch.JSON file. This shoudl be stored in a .vscode folder in your project root, here is the docs: https://code.visualstudio.com/docs/python/debugging
I discovered the "env" field in this snippet here: https://gist.github.com/slaveofcode/b4c18efc99c16029913cde3fd2dba3ce
Not sure how to configure this dynamically with the -option A -option B however. Hope this helps :)
Inspired by my current area of work - which involved Python.
This is what I do for Flask.
MS Link
https://code.visualstudio.com/docs/python/debugging
For any regular Python debugging
Evidence
import os
for key in os.environ.keys():
print(f"{key}={os.environ.get(key)}")
After doing a F5 in VS Code with a file containing the above snippet:
Update on Feb 18
After receiving a comment I think the OP wants to run a script before debugging the Fask application. The steps that worked for me are below.
Overview
I ended up with the following files:
Add a PowerShell file dosomething.ps1 (my custom script which I intend to launch before every debug session)
Add a task.json (launch dosomething.ps1)
Edit the existing launch.json by linking it with the task in task.json
The file dosomething.ps1
Write-Host "Inside do something"
Write-Host "The value of the environment variable TEMP is $env:TEMPcls"
Write-Host "The current path of the script is $PSScriptroot"
The file tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "my script task",
"type": "shell",
"windows": {
"command": "pwsh -f dosomething.ps1"
},
"problemMatcher": []
}
]
}
Linking the launch.json with task.json
After pressing F5
All in title. Also i'm russian and this is Google Translate. I opened the process in Task Manager and went to the file location. There was an error with access denial, but it was solved with the help of Computer Control. But I don't know how to open this particular terminal in vs code. I introduced OpenConsole first.Yes, but it was only a terminal. But that's what I'm interested in.
SCREENSHOT
I think you want to launch the new Windows Terminal from within VS Code.
What you need to do is edit your USER settings.json, and locate the line that associates an editor with the integrated Windows terminal (there are three built-in editors that you can redefine:
Windows (cmd or PowerShell)
Windows Subsystem for Linux (wsl)
Linux (xterm)
):
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe",
If you REPLACE this by:
"terminal.integrated.shell.windows": "C:\\Users\\<your_user_name>\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe",
... then your Windows Terminal will pop up rather than the cmd integrated console. But it will be in a separate window (not in the VS Code pane); I am not aware of any method on how to start Windows Terminal in integrated mode...
If it is however your intention to replace the usual cmd terminal by a PowerShell, then you can follow the instructions from Fran6.
A more graphical method is go to your existing VS Code terminal, and go to the drop down to select one of multiple terminals you might have launched. Below your existing terminals, there is an option to 'Select Default Shell':
When you select this option, this will take you straight to the options available to change to your preferred integrated shell:
When you now hit the + next to the dropdown, you can accumulate as many shells as you want, of any type that you want; Here is an example of 2 cmd shells, 1 PowerShell, and one wsl shell:
Update (May 2021):
The terminal.integrated.shell.windows setting is now deprecated.
You should add a profile to terminal.integrated.profiles.windows. For example:
terminal.integrated.profiles.windows": {
"PowerShell": {
"source": "PowerShell",
"icon": "terminal-powershell"
},
"Command Prompt": {
"path": "C:\\WINDOWS\\System32\\cmd.exe"
},
"wt": {
"path": "C:\\Users\\<your_user_name>\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"
},
},
Then set it as default:
"terminal.integrated.defaultProfile.windows": "wt",
To use a different shell in vscode:
Use the shortcut Ctrl + Shift + P on your keyboard or go to view >> Command Palette
Type in:
Terminal: select default shell
From there you can select a powershell terminal instead of the usual command prompt
VSCode Change Default Terminal
Here is a detailed guide. Just changing the value of the object, works unless you're running java and other programming languages. It works well even with the Code Runner extension.
This question already has answers here:
How to quickly change shell folder to match the currently open file
(5 answers)
Closed 3 years ago.
In class we had a hotkey for using the terminal with the currently choosen directory. I fixed an issue now with the debugger and everything seems to run smoothly now. Yet, what hotkey fixes this issue?
With VSCode 1.39 (Sept. 2019), no more plugin needed.
You now can "Open new terminals with custom working directories"
There is a new command that allows the creation of terminals with a custom current working directory (cwd):
{
"key": "cmd+shift+c",
"command": "workbench.action.terminal.newWithCwd",
"args": {
"cwd": "${fileDirname}"
}
}
You can create your own keyboard shortcuts to open new terminals in any number of handy working directories.
The cwd value can either be a normal path or a variable.
For a hotkey to quickly set your terminal folder to your current directory, see How to quickly change shell folder to match the currently open file
{
"key": "alt+t",
"command": "workbench.action.terminal.sendSequence",
"args": {"text": "cd '${fileDirname}'\u000D"}
},
This will change your current terminal, not open a new terminal - if you want to do that see the link above as well for the new command recently added to vscode.
Note that on windows, you must use the following instead:
"args": {"text": "cd /d \"${fileDirname}\"\u000D"}
This is because on Windows, the /d parameter must be used with cd to switch drives.
By default, the terminal will open at the folder that is opened in the Explorer. The hotkey for that depends on your operating system, in my case, on macOS, it's ⌃ + `, on Windows I think it's ctrl + j.
If you want to open at a specific folder you can change that behaviour with this setting:
{
"terminal.integrated.cwd": "/home/user"
}
If you want to open at the current file's directory you can install an extension like Terminal Here.
You can change the shortcuts/hotkeys for many actions on Code. For that open the Keyboard Shortcuts editor under File > Preferences > Keyboard Shortcuts and search for Toggle Integrated Terminal.
I looked at this link which talks about changing the default command shell in the integrated terminal of Visual Studio Code. I was able to change it to Git Bash using the below setting in the settings.json file. You can open settings.json file by pressing the Ctrl + , or from File → Preferences → Settings menu:
{
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
}
There is a + sign in the integrated terminal with the help of which you can have multiple terminals running parallelly as shown in the screenshot below:
I want to load a Git Bash shell in terminal # 1, Windows PowerShell in terminal # 2, and so on. What is the relevant configuration to achieve it?
No need to keep changing your default terminal setting. Install the Shell Launcher extension, configure it, and then ctrl-shift-t to select which terminal you want to open inside of VS Code.
As of June 17 '2018, things have become really smooth in Visual Studio (VS) Code when it comes to changing the integrated command shell. I'm enlisting all the options here:
Select a different command shell on the go - Name of the command shell is itself a command to switch the current command shell to the target command shell. For example, let's say my integrated command shell is currently showing Bash, and I want to switch to PowerShell. Then type powershell command and press Enter. The command shell will change to PowerShell. Similarly it works for all other types of command shells installed in VS Code.
More instances of command shell - Press Ctrl + Shift + `(back-tick). Every time you press the keyboard shortcut combination, a new instance of the command shell will get added.
Change the configuration of default command shell type - Press F1 in Visual Studio Code and type or select Terminal: Select Default Shell as shown in the snapshot below.
Once selected, then choose the default command shell of your choice to change the settings permanently:
In recent version (1.15.0) you can
change the settings, then run the terminal, you've set
then change the settings again and run the another type of terminal by pressing the + sign
and so on...
You can put this in your settings file, and uncomment which one you need.
// 64-bit cmd if available, otherwise 32-bit
//"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\cmd.exe"
// 64-bit PowerShell if available, otherwise 32-bit
//"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\WindowsPowerShell\\v1.0\\powershell.exe"
// Git Bash
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe"
// Bash on Ubuntu (on Windows)
//"terminal.integrated.shell.windows": "C:\\Windows\\sysnative\\bash.exe"
Click on Arrow then click something like Select template profile
so then , will Open the search bar automatically, so... change by your choice
Terminal profiles is what you are looking for - https://code.visualstudio.com/docs/terminal/profiles. It didn't exist by the time the question was posted and the only solution by that time was the somewhat limited "terimnal.integrated.terminal.xxx" solution.
Example configuration:
"terminal.integrated.profiles.windows": {
"Cmd": {
"path": "C:\\Windows\\System32\\cmd.exe",
"icon": "terminal-cmd"
},
"GitBash": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe", "icon": "terminal-bash",
"icon": "terminal-bash"
},
"PowerShell": {
"path": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
"icon": "terminal-powershell"
},
},
I am using Visual Studio Code on my Windows 10 PC. I want to change my default terminal from Windows PowerShell to Bash on Ubuntu (on Windows).
How can I do that?
You can also select your default terminal by pressing F1 in VS Code and typing/selecting Terminal: Select Default Profile (or Terminal: Select Default Shell in older VSCode versions).
Older:
Configure your default integrated terminal by running the Terminal: Select Default Profile command, which is also accessible via the terminal dropdown.
See https://code.visualstudio.com/docs/editor/integrated-terminal#_terminal-profiles
I just type following keywords in the opened terminal;
powershell
bash
cmd
node
python (or python3)
See details in the below image. (VSCode version 1.19.1 - windows 10 OS)
It works on VS Code Mac as well. I tried it with VSCode (Version 1.20.1)
Go to File > Preferences > Settings (or press Ctrl+,) then click the leftmost icon in the top right corner, "Open Settings (JSON)"
In the JSON settings window, add this (within the curly braces {}):
"terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\bash.exe"`
(Here you can put any other custom settings you want as well)
Checkout that path to make sure your bash.exe file is there otherwise find out where it is and point to that path instead.
Now if you open a new terminal window in VS Code, it should open with bash instead of PowerShell.
Since you use WSL, VSCode has dedicated Remote - WSL extension so you can use Linux environment directly in VSCode. When you open the project inside Linux, by default, it's use Linux default shell (bash by default), so no config needed.
If you want to switch to other profile, there is Terminal > Integrated > Default Profile: Linux section so you can pick your favorite one.
Going off of #arielhad's solution...
My VSCode version was 1.57.1.
Open settings.xml file:
Ctrl + Shift + p
Type 'Open Settings (JSON)' and select.
Add the following:
"terminal.integrated.profiles.windows": {
"PowerShell": {
"path": [
"${env:windir}\\Sysnative\\WindowsPowerShell\\v1.0\\powershell.exe",
"${env:windir}\\System32\\WindowsPowerShell\\v1.0\\powershell.exe"
],
"source": "PowerShell",
"icon": "terminal-powershell",
"args": [
"-NoLogo",
"-ExecutionPolicy",
"Bypass"
]
},
"Command Prompt": {
"path": [
"${env:windir}\\Sysnative\\cmd.exe",
"${env:windir}\\System32\\cmd.exe"
],
"icon": "terminal-cmd"
},
//START: THIS DOES NOT WORK
"Git Bash": {
"path": [
"C:\\Program Files\\Git\\bin\\bash.exe",
],
"source": "Git Bash",
"icon": "terminal-bash"
}
// END: THIS DOES NOT WORK
//START: THIS WORKS
"GitBash": {
"path": [
"C:\\Program Files\\Git\\bin\\bash.exe",
],
"icon": "terminal-bash"
}
// END: THIS WORKS
}
I don't know why the second way works but it does. It appears the 'Git Bash' is a reserved name and I guess you cannot set the path.
To change the default terminal for your project in Visual Studio Code:
Create a folder by name of .vscode
Create a settings.json file in this folder:
Write the settings you want
for example, if you are a window user and want to set "Command Prompt" as the default terminal you can write:
"terminal.integrated.defaultProfile.windows": "Command Prompt"
values You can pass: "Git Bash", "PowerShell", and "Command Prompt".
for Linux you will use terminal.integrated.defaultProfile.linux and for mac os you will use: terminal.integrated.defaultProfile.osx
press ctrl+Shift+p
-> type settings.json
at the of file change the 'powershell' to 'Git Bash'
The integrated shell option still works but has been depreciated. The fix is to use the integrated profile instead:
"terminal.integrated.defaultProfile.windows": "C:\\Program Files\\Git\\bin\\bash.exe (migrated)",
"terminal.integrated.profiles.windows": {
"C:\\Program Files\\Git\\bin\\bash.exe (migrated)": {
"path": "C:\\Program Files\\Git\\bin\\bash.exe",
"args": []
}
}
Just press Ctrl + Shift +p
search "Terminal: Select Default Profile" click
You will see terminals options and select Git Bash
If you want to select the type of console, you can write this in the file "keybinding.json" (this file can be found in the following path "File-> Preferences-> Keyboard Shortcuts")
`
//with this you can select what type of console you want
{
"key": "ctrl+shift+t",
"command": "shellLauncher.launch"
},
//and this will help you quickly change console
{
"key": "ctrl+shift+j",
"command": "workbench.action.terminal.focusNext"
},
{
"key": "ctrl+shift+k",
"command": "workbench.action.terminal.focusPrevious"
}`
You can change the terminal by opening command pallete by pressing CTRL SHIFT P
or you can go to View in the top and click "Open Command Pallete"
then type Terminal: Select Default Profile
and you you type which terminal you want.