Description
Bug report
Bug description:
Issue
Script:
import sys
print(f"sys.base_prefix = {sys.base_prefix}")
print(f"sys.base_exec_prefix = {sys.base_exec_prefix}")
print(f"sys.prefix = {sys.prefix}")
print(f"sys.exec_prefix = {sys.exec_prefix}")
print(f"sys.path = {sys.path}")
import dbm.gnu
print("hello")
I created a virtual environment using Python 3.13 from homebrew using --system-site-packages
.
When I run the script, Python cannot find dbm
.
sys.base_prefix = /home/linuxbrew/.linuxbrew/opt/python@3.13
sys.base_exec_prefix = /home/linuxbrew/.linuxbrew/opt/python@3.13
sys.prefix = /workplace/shrinkwrap/venv3.13
sys.exec_prefix = /workplace/shrinkwrap/venv3.13
sys.path = ['/tmp', '/home/linuxbrew/.linuxbrew/opt/python@3.13/lib/python313.zip', '/home/linuxbrew/.linuxbrew/opt/python@3.13/lib/python3.13', '/home/linuxbrew/.linuxbrew/opt/python@3.13/lib/python3.13/lib-dynload', '/workplace/shrinkwrap/venv3.13/lib/python3.13/site-packages', '/home/linuxbrew/.linuxbrew/opt/python@3.13/lib/python3.13/site-packages', '/home/linuxbrew/.linuxbrew/lib/python3.13/site-packages']
Traceback (most recent call last):
File "/tmp/test.py", line 9, in <module>
import dbm.gnu
File "/home/linuxbrew/.linuxbrew/opt/python@3.13/lib/python3.13/dbm/gnu.py", line 3, in <module>
from _gdbm import *
ModuleNotFoundError: No module named '_gdbm'
dbm
is there: /home/linuxbrew/.linuxbrew/Cellar/python@3.13/3.13.5/lib/python3.13/dbm
I created another virtual environment with the Python from the system (Python 3.12) using --system-site-packages
too.
This time, the script runs successfully.
sys.base_prefix = /usr
sys.base_exec_prefix = /usr
sys.prefix = /workplace/shrinkwrap/venv
sys.exec_prefix = /workplace/shrinkwrap/venv
sys.path = ['/tmp', '/usr/lib/python312.zip', '/usr/lib/python3.12', '/usr/lib/python3.12/lib-dynload', '/workplace/shrinkwrap/venv/lib/python3.12/site-packages', '/usr/local/lib/python3.12/dist-packages', '/usr/lib/python3/dist-packages']
hello
I had a look at https://github.com/python/cpython/blob/490eea02819ad303a5042529af7507b7b1fdabdc/Lib/site.py but could not find anything obvious. The paths seem to be set as expected.
Since /home/linuxbrew/.linuxbrew/opt/python@3.13/lib/python3.13
is in sys.path
, why can't Python find dbm
in the homebrew case, but find it with the system python ?
Environment
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.2 LTS
Release: 24.04
Codename: noble
Pyenv.cfg
from env with Python 3.12:
home = /usr/bin
include-system-site-packages = true
version = 3.12.3
prompt = 'shrinkwrap'
executable = /usr/bin/python3.12
command = /usr/bin/python3.12 -m venv --system-site-packages --prompt="shrinkwrap" /workplace/shrinkwrap/venv
Pyenv.cfg
from env with Python 3.13:
home = /home/linuxbrew/.linuxbrew/opt/python@3.13/bin
include-system-site-packages = true
version = 3.13.5
prompt = 'shrinkwrap'
executable = /home/linuxbrew/.linuxbrew/Cellar/python@3.13/3.13.5/bin/python3.13
command = /home/linuxbrew/.linuxbrew/opt/python@3.13/bin/python3.13 -m venv --system-site-packages --prompt="shrinkwrap" /workplace/shrinkwrap/venv3.13
CPython versions tested on:
3.13
Operating systems tested on:
Linux