[New-bugs-announce] [issue35706] Making an embedded Python interpreter use a venv is difficult

Dieter Weber report at bugs.python.org
Thu Jan 10 09:04:59 EST 2019

New submission from Dieter Weber <dieter at uellue.de>:

Python virtual environments are awesome! Using venvs with an embedded Python interpreter has proven difficult, unfortunately. With conda environments it works. See appended a sample file to reproduce the behavior.

The core of the problem seems to be that a venv doesn't contain a full Python installation, and Py_Initialize() apparently doesn't support setting up the combination of venv directories and base installation correctly, i.e. setting sys.prefix and sys.base_prefix and potentially other values.

Observed behavior when trying to use a venv:

Initializing... Fatal Python error: Py_Initialize: unable to load the file system codec
ModuleNotFoundError: No module named 'encodings'

Current thread 0x00001e90 (most recent call first):

Expected behavior:
Setting Py_SetPythonHome() to a venv works and sets up all paths and prefixes correctly to use the venv, just like it does for a conda environment.

files: Source.cpp
messages: 333378
nosy: Dieter Weber
priority: normal
severity: normal
status: open
title: Making an embedded Python interpreter use a venv is difficult
type: enhancement
versions: Python 3.6
Added file: https://bugs.python.org/file48039/Source.cpp

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list