Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] Using attr for version specification with namespace packages #2919

Open
1 task done
hsorby opened this issue Dec 8, 2021 · 1 comment
Open
1 task done

[BUG] Using attr for version specification with namespace packages #2919

hsorby opened this issue Dec 8, 2021 · 1 comment

Comments

@hsorby
Copy link

hsorby commented Dec 8, 2021

setuptools version

setuptools == 58.5.3

Python version

Python 3.9

OS

macOS

Additional environment information

No response

Description

When I try to pip install <namespace-package> using attr to determine the value of version I get a failure message.

Expected behavior

The pip install <namespace-package> command works successfully.

How to Reproduce

I have created an example to show this behaviour:

  1. Clone repo. https://github.com/hsorby/setuptools-issue
  2. Create virtual environment: python -m venv issue
  3. Activate: source issue/bin/activate
  4. cd setuptools-issue
  5. Install animals.cat package: pip install animals.cat/
  6. Install animals.dog package: pip install animals.dog/

This will fail because ModuleNotFoundError: No module named 'animals.dog'

If I now uninstall animals.cat: pip uninstall animals.cat and then repeat steps 5. and 6. they will succeed, I'm guessing because something has been leftover from the uninstall?

Output

    File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
    File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
    File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked
  ModuleNotFoundError: No module named 'animals.dog'
  ----------------------------------------

Code of Conduct

  • I agree to follow the PSF Code of Conduct
@hsorby hsorby added bug Needs Triage Issues that need to be evaluated for severity and status. labels Dec 8, 2021
@jaraco
Copy link
Member

jaraco commented Dec 18, 2021

Thanks for the report.

Is there a reason you're using pkg_resources-style namespace packages? I would not recommend using those except for legacy namespaces, and even for those, I'd recommend to migrate to pkgutil-style (for Python 3.2 or earlier) or PEP 420 native namespace packages.

I suspect the issue is that the attr functionality is relying on simple package resolution and hasn't bootstrapped the namespace packages support. I suspect it will be difficult to correct the issue and for little value with a deprecated feature.

I'd recommend to simply avoid using attr until you're able to migrate away from pkg_resources-style namespace packages.

I welcome you to investigate further to trace the root cause and I'd welcome a patch if it doesn't add too much complication to the implementation.

@jaraco jaraco added help wanted and removed Needs Triage Issues that need to be evaluated for severity and status. labels Dec 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants