Skip to content

Python 3.11: venv pythonpath seems to conflict with importlib #192

@Yun-Kim

Description

@Yun-Kim

Riot seems to have problems with Python 3.11's importlib in terms of managing virtual environments. Specifically in dd-trace-py using riot, Hypothesis' vendored text file is not being found even though there is no problem running ddtrace.tests.tracer.test.http.py tests locally with Python 3.11.

Steps to Reproduce

Package Structure

To reproduce, here is my file structure:

repro_script.py
repro_package
├── setup.py
└─── src
      ├─ __init__.py
      ├─ test.py
      └─ vendor
          ├─ __init__.py
          └─ domains.txt

repro_script.py:

from repro_package import test

repro_package/setup.py:

import os
import setuptools

def local_file(name):
  return os.path.relpath(os.path.join(os.path.dirname(__file__), name))

SOURCE = local_file("src")

setuptools.setup(
  name="repro_package",
  packages=setuptools.find_packages(SOURCE),
  package_dir={"": SOURCE},
  package_data={"repro_package": ["vendor/domains.txt"]}
)

repro_package/src/test.py:

from importlib.resources import files

domains_file = files("repro_package.vendor") / "domains.txt"
domains = domains_file.read_text().splitlines()

repro_packages/src/vendor/domains.txt:

APPLE
BANANA
CHERRY

Reproduction Command

python --version
# Python 3.11.0rc2+

python -m venv .venv
source .venv/bin/activate
pip install -e repro_package
python repro_script.py

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions