VSCode -- how to set working directory for debugging a Python program
@SpeedCoder5's comment deserves to be an answer.
In launch.json
, specify a dynamic working directory (i.e. the directory where the currently-open Python file is located) using:
"cwd": "${fileDirname}"
This takes advantage of the "variables reference" feature in VS Code, and the predefined variable fileDirname
.
If you're using the Python: Current File (Integrated Terminal)
option when you run Python, your launch.json
file might look like mine, below (more info on launch.json
files here).
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Current File (Integrated Terminal)",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"cwd": "${fileDirname}"
},
//... other settings, but I modified the "Current File" setting above ...
}
Remember the launch.json
file controls the run/debug settings of your Visual Studio code project; my launch.json
file was auto-generated by VS Code, in the directory of my current "Open Project". I just edited the file manually to add "cwd": "${fileDirname}"
as shown above.
Remember the launch.json
file may be specific to your project, or specific to your directory, so confirm you're editing the correct launch.json
(see comment)
If you don't have a launch.json
file, try this:
To create a launch.json file, open your project folder in VS Code (File > Open Folder) and then select the Configure gear icon on the Debug view top bar.
Python in VSCode: Set working directory to python file's path everytime
Updated Solution: working as of 21/1/2021
Option 1:
- Locate and open the user settings file:
- Windows
%APPDATA%\Code\User\settings.json
- macOS
$HOME/Library/Application Support/Code/User/settings.json
- Linux
$HOME/.config/Code/User/settings.json
- Windows
- Add this line:
"python.terminal.executeInFileDir": true
Option 2:
- Open the Settings editor:
- On Windows/Linux - File > Preferences > Settings
- On macOS - Code > Preferences > Settings
- or use the keyboard shortcut
(Ctrl+,)
.
- Check the following box:
- Extensions > Python > Terminal: Execute In File Dir.
- or use the Search bar and type this setting id
python.terminal.executeInFileDir
.
How to set the root directory for Visual Studio Code Python Extension?
You can create a .env
file with:
PYTHONPATH=server
That will add your server
folder to PYTHONPATH
as needed.
(You may need to restart VSCode for it to take PYTHONPATH
into account correctly.)
Edited to clarify...
Create a file named .env
under the repo root e.g. your_repo/.env
.
Also creating the file under the folder where your consuming code is, instead of under repo root, seems to work e.g. your_repo/service/.env
.
For more details, see documentation on environment variable definition files.
For me this worked without restarting VSC, perhaps this is a matter of newer VSC and extensions versions.
Related Topics
Get Human Readable Version of File Size
In Python, How to Capture the Stdout from a C++ Shared Library to a Variable
Passing a Matplotlib Figure to HTML (Flask)
Generating HTML Documents in Python
Understand the Find() Function in Beautiful Soup
How Find Specific Data Attribute from HTML Tag in Beautifulsoup4
Using a Django Variable in a CSS File
Python Script for Minifying CSS
How to Edit Header Row in Pandas - Styling
How to Style Gtkbox Margin/Padding with CSS Only
Wtforms, Add a Class to a Form Dynamically
Matplotlib Table Formatting Column Width
Display Loading Symbol While Waiting for a Result with Plot.Ly Dash
CSS Not Rendered by Pisa's PDF Generation in Django
How to Select and Extract Texts Between Two Elements
How to Send Non-English Unicode String Using Http Header