Path terminal rollback to previous on VSCode after run code - python

I'm using VSCode and Anaconda for virtual envs.
On a new folder (for a new project), I navigate to the folder of the project on VSCode terminal and activated the correct env for that project.
When I run any code from this folder, the terminal comeback to the folder it was previously, and I need to "cd" to the correct folder again.
I don't know if it is a VSCode configuration or an Anaconda.
What do I need to configure to keep the path after running the code?

Related

VSCode with pyenv-virtualenv, trigger automatically?

Recently I've been using pyenv-virtualenv for my python projects and with the vscode extension "Python Environment Manager", and I love the combo.
However I currently need to activate the virtualenvs manually through the plugin.
Does anyone know if there's a good way and have tested it to do it automatically?
Can I for for example create some kind of file structure that would allow vscode to automatically select the right pyenv-virtualenv when I open a file in a specific repo/folder?
Open a folder as a workspace
Use the command to create a new virtual environment in the terminal,
The above command will generate a .venv folder in the current workspace, which is a virtual environment named .venv
Select the .venv virtual environment interpreter in the Select Interpreter panel
New terminals will automatically activate the environment
When you open this folder with vscode next time, VScode will select the last interpreter by default. If you have not changed it, then you will select the .venv virtual environment by default when you open this folder in the future.

How to use the Python debugger in venv in VScode on Windows?

OS:Windows10Pro
IDE:VScode Ver1.59.0
Python:Ver 3.9.6
I created a virtual environment with venv and selected python.exe on the virtual environment with "select interpreter".
Even if I specify a breakpoint on a simple script and execute debug (F5), the breakpoint will be ignored and executed.
In Ubuntu 20.04 on VMware, I debugged in the same way using VScode Ver1.59.0, so it will stop at the breakpoint.
In both Windows and Ubuntu, I didn't specify the path in launch.json or setting.json.
On Windows, I specified the python path in launch.json, but the debugger doesn't work.
Is this a bug specific to the Windows environment? Or am I forgetting to set something?
1.python -m venv [ENV_NAME]
2.Open Folder [ENV_NAME] on VScode
3.Open Terminal
4../Script/acitivate
5.create python script
a=0
print(a) #<-set berak point
6.select interpreter -> ./Script/python.exe
7.press F5(run dubug)
I didn't understand that VScode on Windows had to create an ENV folder directly under the workspace folder.
Curiously, on Ubuntu, the debugger works even if the ENV folder is a workspace folder.
1.Create a project folder
2.Open project folder on VScode
3.Open Terminal
4.cd project folder
5.create venv (python -m venv [ENV_NAME])
6../[ENV_NAME]/Script/acitivate
7.create python script
8.select interpreter -> ./[ENV_NAME]/Script/python.exe
9.press F5(run dubug)

Import could not be resolved/could not be resolved from source Pylance in VS Code using Python 3.9.2 on Windows 10

My Flask App server is running but I have three imports that cannot be resolved.
I have tried:
reinstalling the imports individually
reinstalling requirements.txt
I configured VSCode Workspace with an extra path to my project folder (there is now a .vscode file within the root of my project folder where it was not before)
I have updated my venv path settings in VSCode
Here is my file structure:
- > .vscode
- > client *(React front end)*
- > data
- > server *(Python/Flask back end)*
- > app
- > venv
- config.py
- README.md
- requirements.txt *(this contains the 3 unresolved, along with several that are resolving)*
- .env
- .flaskenv
- .gitignore
- requirements.txt
Unfortunately none of these things have resolved my imports issue and my routes are still not working. Any ideas/suggestions?
Open the Command Palette (Ctrl+Shift+P), then select the Python: Select Interpreter. From the list, select the virtual environment in your project folder that starts with .env.
Run Terminal: Create New Integrated Terminal (Ctrl+Shift+` or from the Command Palette), which creates a terminal and automatically activates the virtual environment by running its activation script.
Install sqlalchemy and mongoengine with command pip install. Once installing them successfully, there will intellisense when you import them and no warnings shown.
Besides, the folder .vscode is to store Workspace settings as well as debugging and task configurations.
If you are using a virtual environment, and even after trying pip installing all the necessary libraries, you have to select the python interpreter that exists in the virtual environment folder.
(Ctrl+Shift+P) then search for "Python: Select Interpreter"
Click "Enter interpreter path" followed by "Find.."
Navigate to your project virtual environment folder
Go into "Scripts" folder and then select "python.exe" as the interpreter.
These steps allow you to select the right python interpreter associated with the project's virtual environment.
Open the Command Palette (Ctrl+Shift+P), then select Python: Clear Cache and Reload window.
Voila, all the import errors vanished.
I specified a path to the python interpreter I'm using within the settings.json file contained in the project repo's .vscode folder.
"python.pythonPath": "path-to-interpreter.python.exe"
Thanks to the following resource! https://dev.to/climentea/how-to-solve-pylance-missing-imports-in-vscode-359b
I ran into this error after an upgrade of my local python version (brew -> manual install), even though the specified interpreter was already /usr/local/bin/python3.
CMD + Shift + P and re-selecting the [same] interpreter fixed the error.
In hindsight, I suspect that a restart of VSCode could have also fixed this. 🤷‍♂️
Perhaps VSCode is using the incorrect Python path for this reason. A base interpreter should be used instead of the vscode interpreter, if necessary.
After verifying my Python interpreter was sourced correctly in VS Code, I simply cleaned my env and reinstalled the project locally and the import errors disappeared. I personally had an odd VS Code/Pylance cache and reinstalling the dependencies and modules fixed it for me.
I was getting the very same error you have and none of the solutions presented here worked me.
I work on a windows machine. I use miniconda to manage my virtual environments. And when I'm coding I launch every program from the command prompt (cmd), including Vscode.
Even tough inside Vscode the python evironment was correctly settled I was getting the very same import error that you mention. The interesting part of it was that I wasn't having any problems to run the code, it was working as usuall. But when coding I wasn't able to see the functions related to the libraries with the import error.
The solution:
Activate the correct conda env for the project before launch Vscode from the command prompt.
Why does this happen?
I BELIVE that this happen because when you don't activate any conda env before launch Vscode. The base conda env is loaded as default. That generates the import conflict. (You can chek this out installing those packagues into the environment and running everything just as you have been doing)

Why doesn't my project's virtual env auto-launch in VS Code?

VS Code v1.58.1
Python v3.92
In a python project, I set up a virtual environment. In this project folder, I have a sub-folder .vscode that contains a file settings.json, which has the following contents (pointer to the project's virtual environment folder):
{
"python.defaultInterpreterPath": "D:\\Documents\\coding\\pyproj1\\proj_env\\Scripts\\python.exe",
"python.terminal.activateEnvironment": true
}
When I open this project folder in VS Code, the powershell terminal does not automatically launch the virtual environment, and in the lower left corner of VS Code, the virtual environment python interpreter is not listed. When I run a new terminal in VS Code, the virtual env is still not activated.
I had the same problem when I was using python.pythonPath which I understand is now deprecated in favor of python.defaultInterpreterPath.
If I leave VS Code alone for a few minutes after opening the project folder, it will sometimes select the virtual env interpreter. But since I'm telling VS Code where it is, why isn't it selecting this at folder open?
Where am I going wrong?
The python.defaultInterpreterPath setting only works at the first time.
After you manually select the python interpreter, the VSCode will remember it. When you reopen the VSCode, it will select the interpreter the last time you have selected. And the python.defaultInterpreterPath setting will have no influence anymore.
But you take this command to reset it: Python:Clear Workspace Interpreter Setting.
Update:
You can set the python.defaultInterpreterPath like this:
"python.defaultInterpreterPath": ".venv\\Scripts\\python.exe"
It looks like has some problem with your Python extension or the cache.
Could you try to:
Reinstall the python extension. Remember to delete the extension folder under: C:\Users\${UserName}\.vscode\extensions
Delete all the files under these locations:
C:\Users\${UserName}\AppData\Roaming\Code\User\globalStorage
C:\Users\${UserName}\AppData\Roaming\Code\User\workspaceStorage
Or you can empty the folder of:
C:\Users\${UserName}\AppData\Roaming\Code
But remember to storage the settings.json under
C:\Users\${UserName}\AppData\Roaming\Code\User
As described in the earlier comment: "So it seems my issue is that VS Code does not remember the interpreter I used last time."
What resolved the issue is deleting the virtual env and recreating it. Now when I open the project folder, VS Code auto activates the virtual env.
Steps involved for anyone wishing to do the same:
activate virtual env
create requirements file: pip freeze > requirements.txt
deactivate to exit venv
rm proj_env or whatever the name of the venv folder is
create virtual env, e.g., python -m venv proj_env
activate the virtual env (VS Code may detect the venv during creation, and ask if you wish to activate venv, go ahead and say Yes)
pip install -r requirements.txt to install the requirements into the virtual env

VSCode does not recognize venv

When I create a new project and the virtual environment using the venv python package, VSCode doesn't recognize the new virtual environment. I follow the bellow instruction:
https://code.visualstudio.com/docs/python/environments
The command that I use in the VSCode integrated terminal is:
python -m venv .venv
The terminal that I use is PowerShell 7, But I tried the CMD terminal too.
After running this command, the .venv folder is created very well on the workspace and I checked its behavior on the terminal.
I tried conda package manager to create a venv and VSCode recognizes it. The problem is only with the venv Python package.
I also tried another Python version to create venv, But the problem still exists.
I read this question:
How can I set up a virtual environment for Python in Visual Studio Code?
I know how to add an environment manually, but I expect VSCode to recognize my environments automatically.
I added these lines to settings.json (Preferences):
"python.venvPath": "~/.venv",
"python.venvFolders": [
"~/.venv/Scripts"
]
I activated the venv manually using VSCode integrated terminal.
The problem still isn't solved.
This is a screenshot of my problem:
I know how to add an environment manually, but I want it to be automatic.
I tried VSCode on another PC, and it worked; It doesn't need anything to do except the presence of venv.
VSCode Version: 1.58.0
Python Extension Version: v2021.6.944021595
The "python.venvPath" should be set to the parent folder of the .venv folder.
Virtual environments located in the folder identified by the
python.venvPath setting (see General settings), which can contain
multiple virtual environments. The extension looks for virtual
environments in the first-level subfolders of venvPath.
But, you need not set that. The Python extension should find the venv environment, as it is just located under your workspace folder.
Virtual environments located directly under the workspace (project)
folder.
I tried it locally, it does not work too. It will only show the cached environment path, and the "python.venvPath" does not work either.
And there are some changes of the interpreter storage:
A VSCode internal storage is introduced which will now store the
interpreter settings in the workspace & workspace folder scope.
You can refer to here for more details.
So, it's recommended to select the environment path manually for now.
After writing this command in VS CodeTerminal
python -m venv env
You can simply use
.\env\Scripts\Activate
In the same directory path where you have created the virtual enviroment.
For some reason VSCode had uninstalled all my Python extensions including the main Python extension. After reinstalling them it was able to detect my virtualenvs again.
So I was having this same issue and I resolved it by,
1. Open Settings in VSCode.
2. Search for "python.terminal.activateEnvironment"
3. If unchecked/unticked, then check/tick for both "User" and "Workspace".
The problem is not with VSCode but the workspace settings in which I was working on.
Just changed that and Voila works like a charm.

Categories