Replace deprecated pkg_resources with importlib#117
Open
songmeo wants to merge 8 commits intodronecan:masterfrom
Open
Replace deprecated pkg_resources with importlib#117songmeo wants to merge 8 commits intodronecan:masterfrom
songmeo wants to merge 8 commits intodronecan:masterfrom
Conversation
pkg_resources is no longer bundled by default in newer Python versions, causing ModuleNotFoundError on startup.
pkg_resources is only used for unpacking eggs during cx_Freeze MSI builds. Importing it at module level causes ModuleNotFoundError on systems where setuptools is not installed.
Address maintainer feedback: use import importlib.resources with fully qualified calls to avoid shadowing application variables. Also replace pkg_resources in pip_sizes.py with importlib.metadata.
Collaborator
|
At this stage, i'm in favour of #115 still... For example, during the build stage, the imported library metadata is not showing the package that is being included: python pip_sizes.py
--------alpha-sorted-package-names-----------------
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
<importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
--------size-sorted-package-info-----------------
14353 <importlib.metadata.PathDistribution object at 0x000002272903E590>: 14.353 KB
19976 <importlib.metadata.PathDistribution object at 0x000002272903F790>: 19.976 KB
23057 <importlib.metadata.PathDistribution object at 0x000002272903E2F0>: 23.057 KB
47458 <importlib.metadata.PathDistribution object at 0x000002272903EF50>: 47.458 KB
52569 <importlib.metadata.PathDistribution object at 0x000002272903F7F0>: 52.569 KB
69702 <importlib.metadata.PathDistribution object at 0x000002272903E5F0>: 69.702 KB
76125 <importlib.metadata.PathDistribution object at 0x000002272903E170>: 76.125 KB
77887 <importlib.metadata.PathDistribution object at 0x000002272903F5B0>: 77.887 KB
103778 <importlib.metadata.PathDistribution object at 0x000002272903E110>: 103.778 KB
109840 <importlib.metadata.PathDistribution object at 0x000002272903E290>: 109.84 KB
140339 <importlib.metadata.PathDistribution object at 0x000002272903E650>: 140.339 KB
146018 <importlib.metadata.PathDistribution object at 0x000002272903E710>: 146.018 KB
149809 <importlib.metadata.PathDistribution object at 0x000002272903EA70>: 149.809 KB
159071 <importlib.metadata.PathDistribution object at 0x000002272903FA90>: 159.071 KB
186581 <importlib.metadata.PathDistribution object at 0x000002272903EE30>: 186.581 KB
257060 <importlib.metadata.PathDistribution object at 0x000002272903E830>: 257.06 KB
278320 <importlib.metadata.PathDistribution object at 0x000002272903E1D0>: 278.32 KB
339651 <importlib.metadata.PathDistribution object at 0x000002272903F610>: 339.651 KB
360941 <importlib.metadata.PathDistribution object at 0x000002272903FA30>: 360.941 KB
391781 <importlib.metadata.PathDistribution object at 0x000002272903F550>: 391.781 KB
419051 <importlib.metadata.PathDistribution object at 0x000002272903F9D0>: 419.051 KB
424435 <importlib.metadata.PathDistribution object at 0x000002272903ED10>: 424.435 KB
431342 <importlib.metadata.PathDistribution object at 0x000002272903E6B0>: 431.342 KB
547874 <importlib.metadata.PathDistribution object at 0x000002272903ED70>: 547.874 KB
551226 <importlib.metadata.PathDistribution object at 0x000002272903E4D0>: 551.226 KB
560971 <importlib.metadata.PathDistribution object at 0x000002272903F8B0>: 560.971 KB
574913 <importlib.metadata.PathDistribution object at 0x000002272903EB90>: 574.913 KB
596867 <importlib.metadata.PathDistribution object at 0x000002272903E890>: 596.867 KB
627338 <importlib.metadata.PathDistribution object at 0x000002272903EA10>: 627.338 KB
669234 <importlib.metadata.PathDistribution object at 0x000002272903EEF0>: 669.234 KB
713753 <importlib.metadata.PathDistribution object at 0x000002272903E7D0>: 713.753 KB
753336 <importlib.metadata.PathDistribution object at 0x000002272903F970>: 753.336 KB
785470 <importlib.metadata.PathDistribution object at 0x000002272903F4F0>: 785.47 KB
791996 <importlib.metadata.PathDistribution object at 0x000002272903E530>: 791.996 KB
1069382 <importlib.metadata.PathDistribution object at 0x000002272903D360>: 1069.382 KB
1153753 <importlib.metadata.PathDistribution object at 0x000002272903E350>: 1153.753 KB
2574656 <importlib.metadata.PathDistribution object at 0x000002272903EE90>: 2574.656 KB
3101185 <importlib.metadata.PathDistribution object at 0x000002272903F850>: 3101.185 KB
4775131 <importlib.metadata.PathDistribution object at 0x000002272903E8F0>: 4775.131 KB
5002894 <importlib.metadata.PathDistribution object at 0x000002272903E9B0>: 5002.894 KB
5819666 <importlib.metadata.PathDistribution object at 0x000002272903F670>: 5819.666 KB
6187874 <importlib.metadata.PathDistribution object at 0x000002272903F1F0>: 6187.874 KB
6272370 <importlib.metadata.PathDistribution object at 0x000002272903F490>: 6272.37 KB
7439907 <importlib.metadata.PathDistribution object at 0x000002272903EFB0>: 7439.907 KB
8478305 <importlib.metadata.PathDistribution object at 0x000002272903EDD0>: 8478.305 KB
9232622 <importlib.metadata.PathDistribution object at 0x000002272903EB30>: 9232.622 KB
12253059 <importlib.metadata.PathDistribution object at 0x000002272903EAD0>: 12253.059 KB
29894910 <importlib.metadata.PathDistribution object at 0x000002272903ECB0>: 29894.91 KB
31125509 <importlib.metadata.PathDistribution object at 0x000002272903E410>: 31125.509 KB
69374094 <importlib.metadata.PathDistribution object at 0x000002272903F010>: 69374.094 KB
149055862 <importlib.metadata.PathDistribution object at 0x000002272903F0D0>: 149055.862 KB
Total 364.26 MByteAnother example of an issue, is windows doesn't generate the build. python setup.py bdist_msi
Traceback (most recent call last):
File "C:\Users\MyUser\Workspace\gui_tool\setup.py", line 116, in <module>
import pkg_resources
ModuleNotFoundError: No module named 'pkg_resources' |
Author
|
@joshanne Updated the PR based on your feedback:
Pipeline passes on my fork: https://github.com/songmeo/gui_tool/actions Main difference with #115: this PR scopes |
Author
|
Additionally, this PR now includes the multiprocessing spawn fix from #116 (Debian 13+ / recent Fedora startup issue). |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
pkg_resourceswithimportlib.resourcesinwidgets/__init__.pyfor loading the app iconpkg_resourcesandsetuptools.archive_utilimports insetup.pyinto the Windows-only MSI build block where they're actually usedpkg_resourceswithimportlib.metadatainpip_sizes.pyFixes the
ModuleNotFoundError: No module named 'pkg_resources'that breaks CI on all Python versions (3.9, 3.10, 3.11) and installation on systems wheresetuptoolsis not bundled.Differences from #115
importlib.resources.files()calls as suggested by @joshanne in Replace pkg_resources with importlib #115pkg_resourcesimport insetup.pyinto the Windows-only MSI build block instead of replacing it, since it's only needed thereThis PR was co-authored with Claude Code (AI).