VS Code not running a Python file in the conda environment mentioned - python

I have both anaconda and VS Code installed in my system. When I start writing a script, VS Code gives me an option to chose the interpreter. I choose my particular conda environment. This works fine. However when I try to run the script using Ctrl+Alt+N or using the play button on the top right (using the extension Code Runner), the terminal that opens in the VS Code doesn't recognize that I am now working in a conda environment.
As a result, it gives an error that the module is not installed (because the module is available only in the conda environment).
When I try to manually activate the conda environment from the VS Code terminal, it doesn't work.
What is the workaround? I am using Windows.
Update: If I use cmd as the default integrated terminal in VS Code in place of PowerShell, then the command activate NAME_OF_ANACONDA_ENV works. And then, I can manually run the script. However, running the script using Ctrl+Alt+N still doesn't work; it doesn't recognize that I am in a conda env.

After a few tries i figured out how to do it. So, this works for me.
vs code settings search: code-runner.executorMap
Choose User and
Edit in settings.json
find: "python": "python -u"
change: "python": "$pythonPath -u $fullFileName"
if you encounter tempCodeRunnerFile or selection problem:
vs code settings search: code-runner.ignoreSelection
tick the box

On windows 10: Ctrl+Shift+P and selecting the environment gets the job done.
After setting the environment, I execute by pressing Crtl+F5 to execute without debugging and F5 to debug.

Related

Module import errors with Virtual Environments and VSCode

I have created a virtual environment to install some Python modules. I am using mini-conda to manage and activate the environments.
One issue that I am facing is that the code runs fine when I run it through the terminal with the virtual environment activated.
However, the same code does not run when I use the "Run Code" button (Ctrl + Alt + N) in VSCode. It gives me Module Not Found Error.
How can I run the code from VSCode in the context of my virtual environment?
You should use the same interpreter in VSCode;
To do this you should use Python: Select Interpreter option;
CTRL+Shift+p(default key-bindings) and search for Python: Select Interpreter or search for it in the VSCode settings.
You must have the Code Runner extension installed because the Run Code option is provided by the Code Runner extension.
The triangle button for running code in the upper right corner has three options, among which Run Code is the way to run code provided by the Code Runner extension, while Run Python File and Debug Python File are the way to run and debug code provided by Microsoft's official extension Python.
Running the code with the Run Code option will run the code with the Code Runner extension. And Code Runner does not change the interpreter as you select a different interpreter in the Select Interpreter panel. It seems to always use the preferred interpreter from the system environment variables.
So although you are in a virtual environment and have some packages installed. But when you run code with Run Code, the interpreter is not the virtual environment of your choice. Although you have selected the virtual environment interpreter in the selection panel, this is only valid for Run Python File and Debug Python File provided by the Python extension.
So, run the code with the Run Python File option provided by the Python extension. Or install the packages you need for the interpreter environment currently used by Code Runner.
You can check the currently used interpreter with the following code
import sys
print(sys.executable)

Python package error even after installing

I'm using python on vs code.
I created a virtual environment. Activated it. Installed packages with pip but still in code it says no module name found error.
I assume by "activated it" you mean you have called its activate script within the shell? Then only the shell knows about your environment, you still need to tell VS Code where it is.
Press Ctrl+Shift+P to bring up the command palette, run command Preferences: Open Workspace Settings (JSON) and add the following line to set the Python interpreter of the workspace to the one in your virtual environment:
"python.defaultInterpreterPath": "path/to/your/venv/bin/python"

My Visual Studio Code is not using the Python interpreter that I have set it to

I am currently working on setting up pytorch to be used on Visual Studio Code on my Windows 10 machine. Currently I can use it when I am running it on Anaconda prompt. When running on VS Code, I changed the python interpreter to match the one I am using on Anaconda, but when I try to run it is still using the original, and does not recognize "import torch". I am fairly new to using VS Code and running python on Windows, as I usually code in Linux, any help would be much appreciated!
I have attached a photo showing the current environment as well as the result when typing in "python --version" in the command line on VS Code. Screenshot
The reason is that the VSCode terminal is not refreshed and it is still in the previous state.
Solution:
We can use the shortcut key Ctrl+Shift+` (or you can also click "Terminal", "New Terminal") to open a new VSCode terminal, and it will automatically enter the currently selected Python interpreter environment.
In addition, if you need to import and use the module "torch", please install it in the currently selected environment.
Update:
Please check whether Python is available:
Please enter "where python" in the cmd window:
Please check whether there is a python path in the python environment variable:
Generally, for the python global environment, when we enter "python --version" in the terminal, the system will find the first python in the environment variables by default, so it is recommended that you put the commonly used python at the top of the environment variables and restart VSCode.
For conda environment and virtual environment, VSCode terminal will automatically enter the currently selected environment.
Reference: Environment in VScode.
You can click in Python 3.8.. Conda and then vscode shows a list of python interpreters, select your interprete and vscode creates a settings.json in the .vscode folder with the path of your python interpreter in the current folder open in vscode and everytime you open that folder vscode automatically detects your python interpreter.

How does one connect a Jupyter Kernel to VS Code if one does not connect automatically?

I want to be able to have a working jupyter notebook working for VS code out of the box, with minimal work on my side.
I tried opening a jupyter notebook. I immediately found the interpreter and used my conda env with the command pellet (command + shift + P then in the drop down menu found my conda env). This seems to make the terminal work since which python points to the right place:
(automl-meta-learning) brandomiranda~/automl-meta-learning ❯ which python
/Users/brandomiranda/miniconda3/envs/automl-meta-learning/bin/python
also running python scripts from VS Code seems to be working fine too, see output:
(automl-meta-learning) brandomiranda~/automl-meta-learning ❯ /Users/brandomiranda/miniconda3/envs/automl-meta-learning/bin/python /Users/brandomiranda/automl-meta-learning/python_playground.py
x = 1
my_str = this is a string
y = 2
but when I try the jupyter notebook it doesn't work.
Most noticeably my VS code does not have a kernel connected, look at the screenshot:
I tried clicking on a couple of arrows as suggested on reddit (vs_code_jupyter_server_no_kernel_python_not):
When I try running things in my jupyter notebook I get the following error:
Error: Activating Python 3.7.6 64-bit ('base': conda) to run Jupyter failed with Error: StdErr from ShellExec, /Users/brandomiranda/.bashrc: line 31: jump-module.bash: No such file or directory
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run
$ conda init
Currently supported shells are:
- bash
- fish
- tcsh
- xonsh
- zsh
- powershell
See 'conda init --help' for more information and options.
IMPORTANT: You may need to close and restart your shell after running 'conda init'.
.
which is strange. My shell is not even bash so I don't know why that message is being shown to me (maybe VS Code doesn't know Mac OS Catalina uses zsh? not sure how to fix that for VS Code). Regardless, I proceeded to do what I think the error message is suggesting. So I did the following:
I ran conda init and then went down to the terminal inside vs code and restarted the shell by running zsh but the jupyter kernel still doesn't work on my notebook in vs code. Not sure what's wrong.
In addition, I did what the error message suggested:
(automl-meta-learning) brandomiranda~/automl-meta-learning ❯ conda init zsh
no change /Users/brandomiranda/miniconda3/condabin/conda
no change /Users/brandomiranda/miniconda3/bin/conda
no change /Users/brandomiranda/miniconda3/bin/conda-env
no change /Users/brandomiranda/miniconda3/bin/activate
no change /Users/brandomiranda/miniconda3/bin/deactivate
no change /Users/brandomiranda/miniconda3/etc/profile.d/conda.sh
no change /Users/brandomiranda/miniconda3/etc/fish/conf.d/conda.fish
no change /Users/brandomiranda/miniconda3/shell/condabin/Conda.psm1
no change /Users/brandomiranda/miniconda3/shell/condabin/conda-hook.ps1
no change /Users/brandomiranda/miniconda3/lib/python3.7/site-packages/xontrib/conda.xsh
no change /Users/brandomiranda/miniconda3/etc/profile.d/conda.csh
no change /Users/brandomiranda/.zshrc
No action taken.
but it seems it made no difference.
Any idea how to fix this?
I was suggessted by the developers of the VS code python extension to follow whatever they did here:
https://github.com/microsoft/vscode-python/issues/9566
but I can't figure out exactly it is they want me to do.
How do I fix this?
Related resources:
reddit: https://www.reddit.com/r/vscode/comments/eq2bfv/vs_code_jupyter_server_no_kernel_python_not/
gitissue: https://github.com/microsoft/vscode-python/issues/9636
I initially thought it was a conda issue so I looked into this question: Activate conda environment stopped working in vscode
https://www.reddit.com/r/vscode/comments/eshxka/how_does_one_connect_a_jupyter_kernel_to_vs_code/
https://www.quora.com/unanswered/How-does-one-connect-a-Jupyter-Kernel-to-VS-Code-if-one-does-not-connect-automatically
You need to select the python interpreter for jupyter, you can do it by following the step
Open command panel
Mac: CMD+Shift+P
PC: CTRL+SHIFT+P
Then search for select Interpreter to start jupyter server then hit enter, it will list all the interpreter, then select any interpreter and done!
it's just a one time process, after this, it will get connected automatically.
As bizarre as it seems, I also noticed this the other day and the only thing that works so far for me is to open VS Code by launching it from the Anaconda Navigator:
Then I get, as expected:
If you see the very long discussion I had in the git issue (https://github.com/microsoft/vscode-python/issues/9566) once I removed all the errors thrown by my .bashrc and .zhrc, the jupyter feature in VS code started working for me again. It's super weird (specially because I am NOT using bash at all and I am using zsh as my shell, I would have expected VS code to be robust to my .SHELLrc files throwing errors but it's not).
If that doesn't work, then you might have to install the vsix view extension and install the ms-python-insiders.vsixlinked in the issue (https://github.com/microsoft/vscode-python/issues/9566).
If on Windows VSCode, what worked for me was installing and enabling the Python and Jupyter extensions, then CTRL+SHIFT+P, select Interpreter to start jupyter server. Those extensions were the bottleneck.

VS code runs python with no errors only if started from conda terminal

One of the projects that I work on in Python is pretty big and uses a lot of libraries.
I started developing it in Spyder then switched to VS Code.
I also use conda environment.
The problem is with VS Code only: when I open VS Code itself and try to run the project - I get all kinds of import errors.
However, if I open the conda terminal first and just type "code" in it and execute it - the VS Code opens, I can select my project and everything runs just fine, no errors.
In both cases the environment is the same, I did the Ctrl+Shift+P to select it, plus it shows as selected in the bottom left corner anyway. It's the default env.
How can I fix this so I don't have to start VS Code from conda terminal each time?
at the conda the modules are installed by default.
in vscode or any other of ides you have to install it manually.
open your terminal or cmd and type:
pip install module-name
I found what the problem was so I'll just leave it here in case it may happen to someone else.
My VS Code was using Powershell as the default shell, even though the input was right with the correct conda env selected (the base in my case), even with running
conda activate base
command to ensure it, it would still somehow mess up and complain about missing imports
So the solution was to set the default shell in VSC to regular Windows cmd.exe - that was the only needed change

Categories