vscode-python/pythonExtensionApi
Anthony Kim cde514f650
Update node to 20.18.1 (#25205)
We merged https://github.com/microsoft/vscode-python/pull/25168 into
release branch.
Need to update main branch accodingly.
2025-06-23 23:23:50 +00:00
..
src Jupyter API to get Env associated with Notebooks (#24771) 2025-02-04 15:04:37 -08:00
.eslintrc Modify .eslintrc to turn off any errors for declaration files (#21652) 2023-07-17 23:53:45 +00:00
.npmignore Add npm project for Python API (#21631) 2023-07-14 15:25:02 -07:00
LICENSE.md Add npm project for Python API (#21631) 2023-07-14 15:25:02 -07:00
README.md Update README.md for npm package (#21766) 2023-08-04 15:52:29 -07:00
SECURITY.md Add npm project for Python API (#21631) 2023-07-14 15:25:02 -07:00
package-lock.json Update node to 20.18.1 (#25205) 2025-06-23 23:23:50 +00:00
package.json Update node to 20.18.1 (#25205) 2025-06-23 23:23:50 +00:00
tsconfig.json Use correct `tsconfig.json` when generating npm package (#21651) 2023-07-17 16:13:11 -07:00

README.md

Python extension's API

This npm module implements an API facade for the Python extension in VS Code.

Example

First we need to define a package.json for the extension that wants to use the API:

{
	"name": "...",
	...
	// depend on the Python extension
	"extensionDependencies": [
		"ms-python.python"
	],
	// Depend on the Python extension facade npm module to get easier API access to the
	// core extension.
	"dependencies": {
		"@vscode/python-extension": "...",
		"@types/vscode": "..."
	},
}

Update "@types/vscode" to a recent version of VS Code, say "^1.81.0" for VS Code version "1.81", in case there are any conflicts.

The actual source code to get the active environment to run some script could look like this:

// Import the API
import { PythonExtension } from '@vscode/python-extension';

...

// Load the Python extension API
const pythonApi: PythonExtension = await PythonExtension.api();

// This will return something like /usr/bin/python
const environmentPath = pythonApi.environments.getActiveEnvironmentPath();

// `environmentPath.path` carries the value of the setting. Note that this path may point to a folder and not the
// python binary. Depends entirely on how the env was created.
// E.g., `conda create -n myenv python` ensures the env has a python binary
// `conda create -n myenv` does not include a python binary.
// Also, the path specified may not be valid, use the following to get complete details for this environment if
// need be.

const environment = await pythonApi.environments.resolveEnvironment(environmentPath);
if (environment) {
    // run your script here.
}

Check out the wiki for many more examples and usage.