Prevent Visual Studio Code from activating the Python virtual environment - python

With a Python project opened, whenever I open the integrated terminal in Visual Studio Code it's automatically activating the virtual environment. I'm sure that's done by VS Code because I can find this command in the bash history of that terminal:
source <project-directory>/venv/bin/activate
I don't want the virtual environment to be activated. How can we prevent VS Code from doing that?

Add "python.terminal.activateEnvironment": false to your settings (globally to your user settings if you never want it, otherwise your settings.json file which is found in .vscode directory; this folder is found in your workspace directory if this is a per-workspace thing for you; docs).

If you open the vscode terminal first and then select python interpreter, then it won't activate the python environment. This answer works in vscode 1.44.0 with pyhton 3.8.1. I haven't tested with other versions. However, if you have any files or workspace open you need to close that first to close the python interpreter. You don't need to make any changes in settings.

Related

VS Code Python extension startup environment

I have recently changed computers and I can't fix this 'issue'.
I'm working with Python now and of course I have installed the official Python extension for VS Code. There are options to activate the Python virtual environment at startup as you know, but it is using the Scripts\Activate.ps1 command to do it and it fails always. It works by using manually the Scripts\activate command.
How can I set the Python extension to use the activate command instead of Activate.ps1?
My default terminal is cmd in Visual Studio Code and I'm on Windows 11.
I do not want to switch to the Powershell terminal if possible. I'm fine the CMD.
You can change the command that VS Code's Python extension uses to activate the virtual environment by modifying the python.pythonPath setting in your VS Code settings.json file. Here's how to do it:
Open VS Code and go to File -> Preferences -> Settings
Search for python.pythonPath
Scroll down to the "Python Path" section and click "Edit in settings.json"
In the settings.json file, add the following:
"python.pythonPath": "~/mypath/virtualenv/Scripts/activate"
Save and restart

Visual Code how can I activate the virtual environment automatically?

Maybe a simple question, but I cannot figure it out. I work within Visual Studio Code on a MacBook. Within a directory I create a virtual environment and have activated that with source .venv/bin/activate scripts and everything works fine.
In the terminal I see (.venv) (base) gaston#MacBook-Pro WebScraping %
When I start visual code another time and open this same directory I do not see the (.venv) so I again give manually the command to activate.
My question is there a way to activate the virtual environment automatically when opening the directory?
VS Code Default Python Interpreter Path
You can do this in a number of ways. If your goal is to have the virtual environment selected immediately at the launch of VS Code, you will have to target that virtual environment as the Python Interpreter in VSC.
https://code.visualstudio.com/docs/python/environments
System Preferences->Settings->Python: Default Interpreter Path
You'll want to point it to your virtualenv Python installation, likely something like:
envFolder/bin/python3
VS Code Launch Configuration Python Interpreter
You can also set a specific launch configuration so that VSCode will still use your system Python instance by default; however, specific launch configurations will have the virtual environment specified.
https://code.visualstudio.com/docs/python/debugging
I did something within settings and now it works.
When I open VSC now it opens the directory and the right environment, just the way I wanted it.
Took me some while to figure what finally did the trick:
I opened settings Command + , typed env in the search box. Scrolled through the results until I saw:
Python > Terminal: Activate Env In Current Terminal
and checked the checkbox. That solved my problem.

Use Visual Studio Code with Miniconda on macOS

On my Mac, I installed Python using Miniconda and I have also installed various Python packages using conda. In the Mac Terminal app, my base conda environment is active and when I run Python it correctly uses the Miniconda version of Python as shown below:
In Visual Studio Code (VSCode), I have selected the Miniconda version of Python using the Python Interpreter setting. The correct version of Python and conda environment is shown at the bottom of the window:
However, when I use the built-in terminal in VSCode it still uses the macOS Python even though it shows the base conda environment is active:
I'm using the Python, One Dark Pro, and Jupyter extensions in VSCode. Also, the $PATH in the VSCode terminal and in the Mac terminal app returns the following:
# VSCode terminal
base ❯ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/Library/Apple/usr/bin:/Users/gavinw/miniconda3/bin:/Users/gavinw/miniconda3/condabin
# Mac terminal app
base ❯ echo $PATH
/Users/gavinw/miniconda3/bin:/Users/gavinw/miniconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/TeX/texbin:/Library/Apple/usr/bin
How can I configure the Visual Studio Code terminal to use the Miniconda version of Python?
After selecting the Python that comes with conda, the Python interpreter will be displayed in the lower left corner of VSCode, and then use the shortcut key Ctrl+Shift+` to open a new VSCode terminal, (or click "Terminal", "New terminal") it will automatically enter the selected environment and activate it automatically.
The terminal uses whatever python environment your configured shell command is set to. It is in no way linked to the environment of VS Code
However, If you attempt to run a Python file, it will open up the terminal with the full path to the specified interpreter
These details are laid out in the docs
The Python extension uses the selected environment for running Python code (using the Python: Run Python File in Terminal command), providing language services (auto-complete, syntax checking, linting, formatting, etc.) when you have a .py file open in the editor, and opening a terminal with the Terminal: Create New Integrated Terminal command. In the latter case, VS Code automatically activated the selected environment.
Also, if using code command from an activated session...
launching VS Code from a shell in which a certain Python environment is activated does not automatically activate that environment in the default Integrated Terminal.
Otherwise, launching the desktop app directly would also not be done from an activated conda environment
You may want to check the value in your settings for "python.terminal.activateEnvironment", but I believe this only applies when you actually run a .py file

Visual Studio Code Python Interactive Window env different from selected?

I am using visual studio code to try and replace the Spyder IDE. To replicate Spyder's variable explorer, I am trying to leverage VS code's Python Interactive Window.
Upon launching Vs Code, I select my environment using "Select Interpreter" and then picking the env. This then changes at the bottom of the application as expected.
However, when I then try and run my code in the interactive window it appears to reference a different environment? It also keeps telling me to install ipykernel.
Is this functioning correctly? I do see an option to change the env in the interactive window but that doesn't do anything.enter image description here
I found a similar question here But I have ipykernel installed in my environment so I'm not sure why it wouldn't notice that? Is there another dependency?
Maybe we can simplify the problem.
Click top-right environment and changes it to which you want.
Start off by opening your Anaconda prompt and from there activate your virtual environment (type: conda activate my_env, replacing my_env with your environment name, and hit enter.)
Then type the command: 'code', which will open up VS Code from within your active virtual environment. Before this approach, also check that your VS Code settings.json file has the python path set correctly to your environment installation. Now it should work.
To see your install path: Anaconda is installed in your user home directory: Windows 10: C:\Users\\Anaconda3\

How to get terminal to default open into my virtual environment?

I've created a virtual environment for Python and VSCode, but everytime I open up the terminal, rather than opening up to the work environment folder, it opens up to the folder where I keep my .py file.
Let me explain my steps.
I've created a Work folder, then a work environment folder inside of it. C:\Work and C:\Work\work_env
Next I've created a folder in C:\Work\myprojects to place my .py files in.
Now when I open up the terminal in VSCode, it runs the Activate.ps1 file and my work environment is ready to use but ONLY when I navigate into my work environment folder using cd in the terminal.
Is there a way to default it so that the terminal is open to the work environment right away? I followed all the steps in this short tutorial and this guy got his terminal to work that way but it's different for me. https://www.youtube.com/watch?v=Wuuiga0wKdQ
Thanks!
Add the following line to your settings.json:
"terminal.integrated.cwd": "DESIRED/PATH"
You can find more details here.

Categories

Resources