indygreg / indygreg/PyOxidizer

importlib_metadata.PackageNotFoundError: importlib_metadata

Open
#140 10 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
Rust
Stars
6.2k
Forks
256
PR merge metrics
No merged PRs in 30d

Description

When building a package including importlib_metadata, it fails.

During the build
```console
...

adding embedded resource: changelog.rst
adding embedded resource: index.rst
adding embedded resource: using.rst
adding embedded resource: example-21.12-py3-none-any.whl
adding embedded resource: PKG-INFO
adding embedded resource: SOURCES.txt
adding embedded resource: dependency_links.txt
adding embedded resource: installed-files.txt
adding embedded resource: requires.txt
adding embedded resource: top_level.txt
adding embedded resource: PKG-INFO
adding embedded resource: SOURCES.txt
adding embedded resource: dependency_links.txt
adding embedded resource: installed-files.txt
adding embedded resource: top_level.txt
adding embedded resource: PKG-INFO
adding embedded resource: SOURCES.txt
adding embedded resource: dependency_links.txt
adding embedded resource: installed-files.txt
adding embedded resource: requires.txt
adding embedded resource: top_level.txt
...
package importlib_metadata-0.23-py3.7.egg-info does not exist; excluding resources: ["PKG-INFO", "SOURCES.txt", "dependency_links.txt", "installed-files.txt", "requires.txt", "top_level.txt"]
package more_itertools-7.2.0-py3.7.egg-info does not exist; excluding resources: ["PKG-INFO", "SOURCES.txt", "dependency_links.txt", "installed-files.txt", "top_level.txt"]
package zipp-0.6.0-py3.7.egg-info does not exist; excluding resources: ["PKG-INFO", "SOURCES.txt", "dependency_links.txt", "installed-files.txt", "requires.txt", "top_level.txt"]
...
resolved 4 embedded resource files across 2 packages: {
"importlib_metadata.docs": {
"changelog.rst",
"index.rst",
"using.rst",
},
"importlib_metadata.tests.data": {
"example-21.12-py3-none-any.whl",
},
}
```

```py
>>> import importlib_metadata
Traceback (most recent call last):
File "", line 1, in
File "importlib_metadata", line 547, in
File "importlib_metadata", line 509, in version
File "importlib_metadata", line 482, in distribution
File "importlib_metadata", line 187, in from_name
importlib_metadata.PackageNotFoundError: importlib_metadata
```

Could this be because its setup.py is
```
from setuptools import setup

setup(use_scm_version=True)
```

And setup.cfg includes `setup_requires=setuptools-scm`.

I tried adding setuptools-scm to the project first, and then it is added to the list
```
package importlib_metadata-0.23-py3.7.egg-info does not exist; excluding resources: ["PKG-INFO", "SOURCES.txt", "dependency_links.txt", "installed-files.txt", "requires.txt", "top_level.txt"]
package more_itertools-7.2.0-py3.7.egg-info does not exist; excluding resources: ["PKG-INFO", "SOURCES.txt", "dependency_links.txt", "installed-files.txt", "top_level.txt"]
package setuptools_scm-3.3.3-py3.7.egg-info does not exist; excluding resources: ["PKG-INFO", "SOURCES.txt", "dependency_links.txt", "entry_points.txt", "installed-files.txt", "top_level.txt", "zip-safe"]
package zipp-0.6.0-py3.7.egg-info does not exist; excluding resources: ["PKG-INFO", "SOURCES.txt", "dependency_links.txt", "installed-files.txt", "requires.txt", "top_level.txt"]
```

The comment at https://github.com/indygreg/PyOxidizer/blob/f2ad172e69fd614d8cba58a467064ad018db098a/pyoxidizer/src/pyrepackager/fsscan.rs#L216 (`Ignore EGG-INFO directory..`) is possibly related. Packaging metadata is quite important for a lot of Python code to run properly, and likely this is the same underlying problem with `pkg_resources`.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the `fsscan.rs` location linked in the issue and compare its EGG-INFO handling with the `setup.py` and `setup.cfg` shown for importlib_metadata. Reproduce the build and import failure, then verify that the packaged metadata is available so `importlib_metadata` can resolve its own distribution and the relevant resources are not incorrectly excluded.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, rust
Domain
build-system, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.