Farama-Foundation / Gymnasium

An API standard for single-agent reinforcement learning environments, with popular reference environments and related utilities (formerly Gym)
https://gymnasium.farama.org
MIT License
7.19k stars 798 forks source link

[Question] Weird TypeError occurs when trying to import gymnasium #428

Closed JustinS6626 closed 1 year ago

JustinS6626 commented 1 year ago

Question

I am trying to use the latest version of gymnasium with python 3.10.6 on Ubuntu 22.04. When I type import gymnasium, I get the following error:

Traceback (most recent call last):
  File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode
    exec(code, self.locals)
  File "<pyshell#0>", line 1, in <module>
  File "/usr/local/lib/python3.10/dist-packages/gymnasium/__init__.py", line 12, in <module>
    from gymnasium.envs.registration import make, spec, register, registry, pprint_registry
  File "/usr/local/lib/python3.10/dist-packages/gymnasium/envs/__init__.py", line 364, in <module>
    load_env_plugins()
  File "/usr/local/lib/python3.10/dist-packages/gymnasium/envs/registration.py", line 273, in load_env_plugins
    for plugin in metadata.entry_points(group=entry_point):
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 1009, in entry_points
    return SelectableGroups.load(eps).select(**params)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 459, in load
    ordered = sorted(eps, key=by_group)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 1006, in <genexpr>
    eps = itertools.chain.from_iterable(
  File "/usr/lib/python3.10/importlib/metadata/_itertools.py", line 16, in unique_everseen
    k = key(element)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 941, in _normalized_name
    return self._name_from_stem(stem) or super()._normalized_name
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 622, in _normalized_name
    return Prepared.normalize(self.name)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 871, in normalize
    return re.sub(r"[-_.]+", "-", name).lower().replace('-', '_')
  File "/usr/lib/python3.10/re.py", line 209, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object

I would greatly appreciate guidance on how to fix it.

pseudo-rnd-thoughts commented 1 year ago

Hey, this is a strange issue, What is gymnasium version are you using? Could you add your pip freeze?

Gymnasium and gym have some magic that loads other modules that register an entry point so there will be a conflict with another module most likely

JustinS6626 commented 1 year ago

Thanks for getting back to me so soon! This is the output from my pip freeze:

absl-py==1.2.0
ale-py==0.8.0
appdirs==1.4.4
apturl==0.5.2
astunparse==1.6.3
atari-py==0.2.9
attrs==22.1.0
autograd==1.4
autoray==0.3.2
bcrypt==3.2.0
blinker==1.4
box2d-py==2.3.5
Brlapi==0.8.3
cached-property==1.5.2
cachetools==5.2.0
certifi==2020.6.20
cffi==1.15.1
chardet==4.0.0
chex==0.1.6
click==8.0.3
cloudpickle==2.1.0
colorama==0.4.4
command-not-found==0.3
cryptography==3.4.8
cupshelpers==1.0
cycler==0.11.0
Cython==0.29.32
dbus-python==1.2.18
decorator==4.4.2
defer==1.0.6
dill==0.3.6
distro==1.7.0
distro-info===1.1build1
dm-tree==0.1.8
dopamine-rl==4.0.6
duplicity==0.8.21
etils==1.0.0
Farama-Notifications==0.0.4
fasteners==0.17.3
flatbuffers==23.1.21
flax==0.6.5
fonttools==4.37.1
future==0.18.2
gast==0.4.0
gin-config==0.5.0
glfw==2.5.4
google-auth==2.14.1
google-auth-oauthlib==0.4.6
google-pasta==0.2.0
grpcio==1.50.0
gym-minigrid==1.1.0
gym-notices==0.0.8
gymnasium==0.28.1
gymnasium-notices==0.0.1
h5py==3.7.0
httplib2==0.20.2
idna==3.3
imageio==2.21.1
imageio-ffmpeg==0.4.7
importlib-metadata==4.6.4
importlib-resources==5.9.0
iniconfig==1.1.1
jax==0.4.3
jax-jumpy==1.0.0
jaxlib==0.3.24
jeepney==0.7.1
keras==2.11.0
keyring==23.5.0
kiwisolver==1.4.4
language-selector==0.1
launchpadlib==1.10.16
lazr.restfulclient==0.14.4
lazr.uri==1.0.6
libclang==15.0.6.1
lockfile==0.12.2
loguru==0.6.0
louis==3.20.0
lz4==4.0.2
macaroonbakery==1.3.1
Mako==1.1.3
Markdown==3.4.1
markdown-it-py==2.1.0
MarkupSafe==2.1.1
matplotlib==3.5.3
mdurl==0.1.2
Minigrid==2.1.0
monotonic==1.6
more-itertools==8.10.0
moviepy==1.0.3
mpmath==1.2.1
msgpack==1.0.4
msgpack-numpy==0.4.8
mujoco==2.3.1.post1
mujoco-py==2.1.2.14
multimethod==1.9
multiprocess==0.70.14
netifaces==0.11.0
networkx==2.8.6
ninja==1.10.2.3
ntlm-auth==1.5.0
numpy==1.23.2
nvidia-cublas-cu11==11.10.3.66
nvidia-cuda-nvrtc-cu11==11.7.99
nvidia-cuda-runtime-cu11==11.7.99
nvidia-cudnn-cu11==8.5.0.96
oauthlib==3.2.0
olefile==0.46
opencv-python==4.6.0.66
opt-einsum==3.3.0
optax==0.1.4
orbax==0.1.1
packaging==21.3
pandas==1.5.3
paramiko==2.9.3
pathos==0.3.0
pbr==5.11.0
PennyLane==0.25.1
PennyLane-Lightning==0.25.1
pexpect==4.8.0
Pillow==9.0.1
pluggy==1.0.0
ply==3.11
pox==0.3.2
ppft==1.7.6.6
proglog==0.1.10
protobuf==3.12.4
psutil==5.9.4
ptyprocess==0.7.0
py==1.11.0
pyasn1==0.4.8
pyasn1-modules==0.2.8
pycairo==1.20.1
pycparser==2.21
pycups==2.0.1
pygame==2.1.3.dev8
Pygments==2.14.0
PyGObject==3.42.1
PyJWT==2.3.0
pylatexenc==2.10
pymacaroons==0.13.0
PyNaCl==1.5.0
PyOpenGL==3.1.6
pyparsing==2.4.7
pyRFC3339==1.1
pytest==7.0.1
python-apt==2.4.0+ubuntu1
python-dateutil==2.8.1
python-debian===0.1.43ubuntu1
pytz==2022.1
pyxdg==0.27
PyYAML==5.4.1
pyzmq==24.0.1
qiskit==0.39.2
qiskit-aer==0.11.1
qiskit-ibmq-provider==0.19.2
qiskit-terra==0.22.2
reportlab==3.6.8
requests==2.25.1
requests-ntlm==1.1.0
requests-oauthlib==1.3.1
retworkx==0.11.0
rich==13.3.1
rsa==4.9
scipy==1.9.1
screen-resolution-extra==0.0.0
SecretStorage==3.3.1
semantic-version==2.10.0
sentencepiece==0.1.97
Shimmy==0.2.0
six==1.16.0
stevedore==4.1.1
swig==4.0.2
symengine==0.9.2
sympy==1.11.1
systemd-python==234
tabulate==0.9.0
tensorboard==2.11.0
tensorboard-data-server==0.6.1
tensorboard-plugin-wit==1.8.1
tensorflow==2.11.0
tensorflow-estimator==2.11.0
tensorflow-io-gcs-filesystem==0.30.0
tensorflow-probability==0.19.0
tensorpack==0.11
tensorstore==0.1.31
termcolor==2.1.1
tf-slim==1.1.0
toml==0.10.2
tomli==2.0.1
toolz==0.12.0
torch==1.13.1
torchpack==0.3.1
torchquantum==0.1.5
torchtext==0.6.0
torchvision==0.14.0
tqdm==4.64.1
tweedledum==1.1.1
typing_extensions==4.3.0
ubuntu-advantage-tools==8001
ubuntu-drivers-common==0.0.0
ufw==0.36.1
unattended-upgrades==0.1
urllib3==1.26.5
usb-creator==0.3.7
wadllib==1.3.6
websocket-client==1.4.2
websockets==10.4
Werkzeug==2.2.2
wrapt==1.15.0rc1
xdg==5
xkit==0.0.0
zipp==1.0.0

Does this show where the conflict might be?

pseudo-rnd-thoughts commented 1 year ago

Im trying to work out what the issue and how to debug it but as the error originates in importlib https://docs.python.org/3/library/importlib.metadata.html

Could you print all of the entry points?

JustinS6626 commented 1 year ago

I am not sure if I used the right code to get the entry points, since this is what I used

from importlib.metadata import *
eps = entry_points()

but the output that I got was

Traceback (most recent call last):
  File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode
    exec(code, self.locals)
  File "<pyshell#1>", line 1, in <module>
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 1009, in entry_points
    return SelectableGroups.load(eps).select(**params)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 459, in load
    ordered = sorted(eps, key=by_group)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 1006, in <genexpr>
    eps = itertools.chain.from_iterable(
  File "/usr/lib/python3.10/importlib/metadata/_itertools.py", line 16, in unique_everseen
    k = key(element)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 941, in _normalized_name
    return self._name_from_stem(stem) or super()._normalized_name
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 622, in _normalized_name
    return Prepared.normalize(self.name)
  File "/usr/lib/python3.10/importlib/metadata/__init__.py", line 871, in normalize
    return re.sub(r"[-_.]+", "-", name).lower().replace('-', '_')
  File "/usr/lib/python3.10/re.py", line 209, in sub
    return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object

This seems to be at the root of the problem. Is there another way to see the entry points?

pseudo-rnd-thoughts commented 1 year ago

Looking at the source code, https://github.com/python/cpython/blob/5342f5e713e0cc45b6f226d2d053a8cde1b4d68e/Lib/importlib/metadata/__init__.py#L1020

Could you print the list(importlib.metadata.Distributions()) and itertools.chain.from_iterable(dist.entry_points for dist in distributions())?

JustinS6626 commented 1 year ago

Thanks again for getting back to me so soon! When I do

import importlib
list(importlib.metadata.Distributions())

I get

Traceback (most recent call last):
  File "/usr/lib/python3.10/idlelib/run.py", line 578, in runcode
    exec(code, self.locals)
  File "<pyshell#1>", line 1, in <module>
AttributeError: module 'importlib' has no attribute 'metadata'

and when I run

import itertools
from importlib.metadata import distributions
itertools.chain.from_iterable(dist.entry_points for dist in distributions())

I get

<itertools.chain object at 0x7f3e4eb250f0>

For the first one, did you mean Distribution()?

pseudo-rnd-thoughts commented 1 year ago

You will need to do import importlib.metadata not import importlib

For the second part, you will need to surround it by a list() to extract all of the elements of the generator

JustinS6626 commented 1 year ago

Thanks! For the first part, I did

import importlib.metadata as mt
list(mt.distributions())

and I got

[<importlib.metadata.PathDistribution object at 0x7fde317975e0>, <importlib.metadata.PathDistribution object at 0x7fde31797640>, <importlib.metadata.PathDistribution object at 0x7fde317976a0>, <importlib.metadata.PathDistribution object at 0x7fde31797700>, <importlib.metadata.PathDistribution object at 0x7fde31797760>, <importlib.metadata.PathDistribution object at 0x7fde317977c0>, <importlib.metadata.PathDistribution object at 0x7fde31797820>, <importlib.metadata.PathDistribution object at 0x7fde31797880>, <importlib.metadata.PathDistribution object at 0x7fde317978e0>, <importlib.metadata.PathDistribution object at 0x7fde31797940>, <importlib.metadata.PathDistribution object at 0x7fde317979a0>, <importlib.metadata.PathDistribution object at 0x7fde31797a00>, <importlib.metadata.PathDistribution object at 0x7fde31797a60>, <importlib.metadata.PathDistribution object at 0x7fde31797ac0>, <importlib.metadata.PathDistribution object at 0x7fde31797b20>, <importlib.metadata.PathDistribution object at 0x7fde31797b80>, <importlib.metadata.PathDistribution object at 0x7fde31797be0>, <importlib.metadata.PathDistribution object at 0x7fde31797c40>, <importlib.metadata.PathDistribution object at 0x7fde31797ca0>, <importlib.metadata.PathDistribution object at 0x7fde31797d00>, <importlib.metadata.PathDistribution object at 0x7fde31797d60>, <importlib.metadata.PathDistribution object at 0x7fde31797dc0>, <importlib.metadata.PathDistribution object at 0x7fde31797e20>, <importlib.metadata.PathDistribution object at 0x7fde31797e80>, <importlib.metadata.PathDistribution object at 0x7fde31797ee0>, <importlib.metadata.PathDistribution object at 0x7fde31797f40>, <importlib.metadata.PathDistribution object at 0x7fde31797fa0>, <importlib.metadata.PathDistribution object at 0x7fde317f4040>, <importlib.metadata.PathDistribution object at 0x7fde317f40a0>, <importlib.metadata.PathDistribution object at 0x7fde317f4100>, <importlib.metadata.PathDistribution object at 0x7fde317f4160>, <importlib.metadata.PathDistribution object at 0x7fde317f41c0>, <importlib.metadata.PathDistribution object at 0x7fde317f4220>, <importlib.metadata.PathDistribution object at 0x7fde317f4280>, <importlib.metadata.PathDistribution object at 0x7fde317f42e0>, <importlib.metadata.PathDistribution object at 0x7fde317963e0>, <importlib.metadata.PathDistribution object at 0x7fde31796440>, <importlib.metadata.PathDistribution object at 0x7fde31796320>, <importlib.metadata.PathDistribution object at 0x7fde31796c80>, <importlib.metadata.PathDistribution object at 0x7fde317f4340>, <importlib.metadata.PathDistribution object at 0x7fde317f4430>, <importlib.metadata.PathDistribution object at 0x7fde317f4490>, <importlib.metadata.PathDistribution object at 0x7fde317f44f0>, <importlib.metadata.PathDistribution object at 0x7fde317f4550>, <importlib.metadata.PathDistribution object at 0x7fde317f45b0>, <importlib.metadata.PathDistribution object at 0x7fde317f4610>, <importlib.metadata.PathDistribution object at 0x7fde317f4670>, <importlib.metadata.PathDistribution object at 0x7fde317f46d0>, <importlib.metadata.PathDistribution object at 0x7fde317f4730>, <importlib.metadata.PathDistribution object at 0x7fde317f4790>, <importlib.metadata.PathDistribution object at 0x7fde317f47f0>, <importlib.metadata.PathDistribution object at 0x7fde317f4850>, <importlib.metadata.PathDistribution object at 0x7fde317f48b0>, <importlib.metadata.PathDistribution object at 0x7fde317f4910>, <importlib.metadata.PathDistribution object at 0x7fde317f4970>, <importlib.metadata.PathDistribution object at 0x7fde317f49d0>, <importlib.metadata.PathDistribution object at 0x7fde317f4a30>, <importlib.metadata.PathDistribution object at 0x7fde317f4a90>, <importlib.metadata.PathDistribution object at 0x7fde317f4af0>, <importlib.metadata.PathDistribution object at 0x7fde317f4b50>, <importlib.metadata.PathDistribution object at 0x7fde317f4bb0>, <importlib.metadata.PathDistribution object at 0x7fde317f4c10>, <importlib.metadata.PathDistribution object at 0x7fde317f4c70>, <importlib.metadata.PathDistribution object at 0x7fde317f4cd0>, <importlib.metadata.PathDistribution object at 0x7fde317f4d30>, <importlib.metadata.PathDistribution object at 0x7fde317f4d90>, <importlib.metadata.PathDistribution object at 0x7fde317f4df0>, <importlib.metadata.PathDistribution object at 0x7fde317f4e50>, <importlib.metadata.PathDistribution object at 0x7fde317f4eb0>, <importlib.metadata.PathDistribution object at 0x7fde317f4f10>, <importlib.metadata.PathDistribution object at 0x7fde317f4f70>, <importlib.metadata.PathDistribution object at 0x7fde317f4fd0>, <importlib.metadata.PathDistribution object at 0x7fde317f5030>, <importlib.metadata.PathDistribution object at 0x7fde317f5090>, <importlib.metadata.PathDistribution object at 0x7fde317f50f0>, <importlib.metadata.PathDistribution object at 0x7fde317f5150>, <importlib.metadata.PathDistribution object at 0x7fde317f51b0>, <importlib.metadata.PathDistribution object at 0x7fde317f5210>, <importlib.metadata.PathDistribution object at 0x7fde317f5270>, <importlib.metadata.PathDistribution object at 0x7fde317f52d0>, <importlib.metadata.PathDistribution object at 0x7fde317f5330>, <importlib.metadata.PathDistribution object at 0x7fde317f5390>, <importlib.metadata.PathDistribution object at 0x7fde317f53f0>, <importlib.metadata.PathDistribution object at 0x7fde317f5450>, <importlib.metadata.PathDistribution object at 0x7fde317f54b0>, <importlib.metadata.PathDistribution object at 0x7fde317f5510>, <importlib.metadata.PathDistribution object at 0x7fde317f5570>, <importlib.metadata.PathDistribution object at 0x7fde317f55d0>, <importlib.metadata.PathDistribution object at 0x7fde317f5630>, <importlib.metadata.PathDistribution object at 0x7fde317f5690>, <importlib.metadata.PathDistribution object at 0x7fde317f56f0>, <importlib.metadata.PathDistribution object at 0x7fde317f5750>, <importlib.metadata.PathDistribution object at 0x7fde317f57b0>, <importlib.metadata.PathDistribution object at 0x7fde317f5810>, <importlib.metadata.PathDistribution object at 0x7fde317f5870>, <importlib.metadata.PathDistribution object at 0x7fde317f58d0>, <importlib.metadata.PathDistribution object at 0x7fde317f5930>, <importlib.metadata.PathDistribution object at 0x7fde317f5990>, <importlib.metadata.PathDistribution object at 0x7fde317f59f0>, <importlib.metadata.PathDistribution object at 0x7fde317f5a50>, <importlib.metadata.PathDistribution object at 0x7fde317f5ab0>, <importlib.metadata.PathDistribution object at 0x7fde317f5b10>, <importlib.metadata.PathDistribution object at 0x7fde317f5b70>, <importlib.metadata.PathDistribution object at 0x7fde317f5bd0>, <importlib.metadata.PathDistribution object at 0x7fde317f5c30>, <importlib.metadata.PathDistribution object at 0x7fde317f5c90>, <importlib.metadata.PathDistribution object at 0x7fde317f5cf0>, <importlib.metadata.PathDistribution object at 0x7fde317f5d50>, <importlib.metadata.PathDistribution object at 0x7fde317f5db0>, <importlib.metadata.PathDistribution object at 0x7fde317f5e10>, <importlib.metadata.PathDistribution object at 0x7fde317f5e70>, <importlib.metadata.PathDistribution object at 0x7fde317f5ed0>, <importlib.metadata.PathDistribution object at 0x7fde317f5f30>, <importlib.metadata.PathDistribution object at 0x7fde317f5f90>, <importlib.metadata.PathDistribution object at 0x7fde317f5ff0>, <importlib.metadata.PathDistribution object at 0x7fde317f6050>, <importlib.metadata.PathDistribution object at 0x7fde317f60b0>, <importlib.metadata.PathDistribution object at 0x7fde317f6110>, <importlib.metadata.PathDistribution object at 0x7fde317f6170>, <importlib.metadata.PathDistribution object at 0x7fde317f61d0>, <importlib.metadata.PathDistribution object at 0x7fde317f6230>, <importlib.metadata.PathDistribution object at 0x7fde317f6290>, <importlib.metadata.PathDistribution object at 0x7fde317f62f0>, <importlib.metadata.PathDistribution object at 0x7fde317f6350>, <importlib.metadata.PathDistribution object at 0x7fde317f63b0>, <importlib.metadata.PathDistribution object at 0x7fde317f6410>, <importlib.metadata.PathDistribution object at 0x7fde317f6470>, <importlib.metadata.PathDistribution object at 0x7fde317f64d0>, <importlib.metadata.PathDistribution object at 0x7fde317f6530>, <importlib.metadata.PathDistribution object at 0x7fde317f6590>, <importlib.metadata.PathDistribution object at 0x7fde317f65f0>, <importlib.metadata.PathDistribution object at 0x7fde317f6650>, <importlib.metadata.PathDistribution object at 0x7fde317f66b0>, <importlib.metadata.PathDistribution object at 0x7fde317f6710>, <importlib.metadata.PathDistribution object at 0x7fde317f6770>, <importlib.metadata.PathDistribution object at 0x7fde317f67d0>, <importlib.metadata.PathDistribution object at 0x7fde317f6830>, <importlib.metadata.PathDistribution object at 0x7fde317f6890>, <importlib.metadata.PathDistribution object at 0x7fde317f68f0>, <importlib.metadata.PathDistribution object at 0x7fde317f6950>, <importlib.metadata.PathDistribution object at 0x7fde317f69b0>, <importlib.metadata.PathDistribution object at 0x7fde317f6a10>, <importlib.metadata.PathDistribution object at 0x7fde317f6a70>, <importlib.metadata.PathDistribution object at 0x7fde317f6ad0>, <importlib.metadata.PathDistribution object at 0x7fde317f6b30>, <importlib.metadata.PathDistribution object at 0x7fde317f6b90>, <importlib.metadata.PathDistribution object at 0x7fde317f6bf0>, <importlib.metadata.PathDistribution object at 0x7fde317f6c50>, <importlib.metadata.PathDistribution object at 0x7fde317f6cb0>, <importlib.metadata.PathDistribution object at 0x7fde317f6d10>, <importlib.metadata.PathDistribution object at 0x7fde317f6d70>, <importlib.metadata.PathDistribution object at 0x7fde317f6dd0>, <importlib.metadata.PathDistribution object at 0x7fde317f6e30>, <importlib.metadata.PathDistribution object at 0x7fde317f6e90>, <importlib.metadata.PathDistribution object at 0x7fde317f7070>, <importlib.metadata.PathDistribution object at 0x7fde317f76a0>, <importlib.metadata.PathDistribution object at 0x7fde317f7880>, <importlib.metadata.PathDistribution object at 0x7fde317f7ac0>, <importlib.metadata.PathDistribution object at 0x7fde317f7d30>, <importlib.metadata.PathDistribution object at 0x7fde317f7fa0>, <importlib.metadata.PathDistribution object at 0x7fde3160c250>, <importlib.metadata.PathDistribution object at 0x7fde3160c4c0>, <importlib.metadata.PathDistribution object at 0x7fde3160c730>, <importlib.metadata.PathDistribution object at 0x7fde3160c9a0>, <importlib.metadata.PathDistribution object at 0x7fde3160cc10>, <importlib.metadata.PathDistribution object at 0x7fde3160ce80>, <importlib.metadata.PathDistribution object at 0x7fde3160d0f0>, <importlib.metadata.PathDistribution object at 0x7fde3160d360>, <importlib.metadata.PathDistribution object at 0x7fde3160d5d0>, <importlib.metadata.PathDistribution object at 0x7fde3160d840>, <importlib.metadata.PathDistribution object at 0x7fde3160dab0>, <importlib.metadata.PathDistribution object at 0x7fde3160dd20>, <importlib.metadata.PathDistribution object at 0x7fde3160df90>, <importlib.metadata.PathDistribution object at 0x7fde3160e200>, <importlib.metadata.PathDistribution object at 0x7fde3160e470>, <importlib.metadata.PathDistribution object at 0x7fde3160e6e0>, <importlib.metadata.PathDistribution object at 0x7fde3160e950>, <importlib.metadata.PathDistribution object at 0x7fde3160ebc0>, <importlib.metadata.PathDistribution object at 0x7fde3160ee30>, <importlib.metadata.PathDistribution object at 0x7fde3160f0a0>, <importlib.metadata.PathDistribution object at 0x7fde3160f310>, <importlib.metadata.PathDistribution object at 0x7fde3160f580>, <importlib.metadata.PathDistribution object at 0x7fde3160f7f0>, <importlib.metadata.PathDistribution object at 0x7fde3160f850>, <importlib.metadata.PathDistribution object at 0x7fde3160f8b0>, <importlib.metadata.PathDistribution object at 0x7fde3160f910>, <importlib.metadata.PathDistribution object at 0x7fde3160f970>, <importlib.metadata.PathDistribution object at 0x7fde3160f9d0>, <importlib.metadata.PathDistribution object at 0x7fde3160fa30>, <importlib.metadata.PathDistribution object at 0x7fde3160fa90>, <importlib.metadata.PathDistribution object at 0x7fde3160faf0>, <importlib.metadata.PathDistribution object at 0x7fde3160fb50>, <importlib.metadata.PathDistribution object at 0x7fde3160fbb0>, <importlib.metadata.PathDistribution object at 0x7fde3160fc10>, <importlib.metadata.PathDistribution object at 0x7fde3160fc70>, <importlib.metadata.PathDistribution object at 0x7fde3160fcd0>, <importlib.metadata.PathDistribution object at 0x7fde3160fd30>, <importlib.metadata.PathDistribution object at 0x7fde3160fd90>, <importlib.metadata.PathDistribution object at 0x7fde3160fdf0>, <importlib.metadata.PathDistribution object at 0x7fde3160fe50>, <importlib.metadata.PathDistribution object at 0x7fde3160feb0>, <importlib.metadata.PathDistribution object at 0x7fde3160ff10>, <importlib.metadata.PathDistribution object at 0x7fde3160ff70>, <importlib.metadata.PathDistribution object at 0x7fde3160ffd0>, <importlib.metadata.PathDistribution object at 0x7fde31628070>, <importlib.metadata.PathDistribution object at 0x7fde316280d0>, <importlib.metadata.PathDistribution object at 0x7fde31628130>, <importlib.metadata.PathDistribution object at 0x7fde31628190>, <importlib.metadata.PathDistribution object at 0x7fde316281f0>, <importlib.metadata.PathDistribution object at 0x7fde31628250>, <importlib.metadata.PathDistribution object at 0x7fde316282b0>, <importlib.metadata.PathDistribution object at 0x7fde31628310>, <importlib.metadata.PathDistribution object at 0x7fde31628370>, <importlib.metadata.PathDistribution object at 0x7fde316283d0>, <importlib.metadata.PathDistribution object at 0x7fde31628430>, <importlib.metadata.PathDistribution object at 0x7fde31628490>, <importlib.metadata.PathDistribution object at 0x7fde316284f0>, <importlib.metadata.PathDistribution object at 0x7fde31628550>, <importlib.metadata.PathDistribution object at 0x7fde316285b0>, <importlib.metadata.PathDistribution object at 0x7fde31628610>, <importlib.metadata.PathDistribution object at 0x7fde31628670>, <importlib.metadata.PathDistribution object at 0x7fde316286d0>, <importlib.metadata.PathDistribution object at 0x7fde31628730>, <importlib.metadata.PathDistribution object at 0x7fde31628790>, <importlib.metadata.PathDistribution object at 0x7fde316287f0>, <importlib.metadata.PathDistribution object at 0x7fde31628850>, <importlib.metadata.PathDistribution object at 0x7fde316288b0>, <importlib.metadata.PathDistribution object at 0x7fde31628910>, <importlib.metadata.PathDistribution object at 0x7fde31628970>, <importlib.metadata.PathDistribution object at 0x7fde316289d0>, <importlib.metadata.PathDistribution object at 0x7fde31628a30>, <importlib.metadata.PathDistribution object at 0x7fde31628a90>, <importlib.metadata.PathDistribution object at 0x7fde31628af0>, <importlib.metadata.PathDistribution object at 0x7fde31628b50>, <importlib.metadata.PathDistribution object at 0x7fde31628bb0>, <importlib.metadata.PathDistribution object at 0x7fde31628c10>, <importlib.metadata.PathDistribution object at 0x7fde31628c70>, <importlib.metadata.PathDistribution object at 0x7fde31628cd0>, <importlib.metadata.PathDistribution object at 0x7fde31628d30>, <importlib.metadata.PathDistribution object at 0x7fde31628d90>, <importlib.metadata.PathDistribution object at 0x7fde31628df0>, <importlib.metadata.PathDistribution object at 0x7fde31628e50>, <importlib.metadata.PathDistribution object at 0x7fde31628eb0>, <importlib.metadata.PathDistribution object at 0x7fde31628f10>, <importlib.metadata.PathDistribution object at 0x7fde31628f70>, <importlib.metadata.PathDistribution object at 0x7fde31628fd0>, <importlib.metadata.PathDistribution object at 0x7fde31629030>, <importlib.metadata.PathDistribution object at 0x7fde31629090>, <importlib.metadata.PathDistribution object at 0x7fde316290f0>, <importlib.metadata.PathDistribution object at 0x7fde31629150>, <importlib.metadata.PathDistribution object at 0x7fde316291b0>, <importlib.metadata.PathDistribution object at 0x7fde31629210>]

For the second part, I did

import itertools
list(itertools.chain.from_iterable(dist.entry_points for dist in mt.distributions()))

and got

[EntryPoint(name='matplotlib', value='pandas:plotting._matplotlib', group='pandas_plotting_backends'), EntryPoint(name='markdown-it', value='markdown_it.cli.parse:main', group='console_scripts'), EntryPoint(name='pygmentize', value='pygments.cmdline:main', group='console_scripts'), EntryPoint(name='AutoROM', value='AutoROM.roms:export', group='ale_py.roms'), EntryPoint(name='AutoROM', value='AutoROM:cli', group='console_scripts'), EntryPoint(name='ale-import-roms', value='ale_py.scripts.import_roms:main', group='console_scripts'), EntryPoint(name='ALE', value='ale_py.gym:register_gym_envs', group='gym.envs'), EntryPoint(name='__internal__', value='ale_py.gym:register_legacy_gym_envs', group='gym.envs'), EntryPoint(name='wheel', value='wheel.cli:main', group='console_scripts'), EntryPoint(name='bdist_wheel', value='wheel.bdist_wheel:bdist_wheel', group='distutils.commands'), EntryPoint(name='field', value='stevedore.example2.fields:FieldList', group='stevedore.example.formatter'), EntryPoint(name='plain', value='stevedore.example.simple:Simple', group='stevedore.example.formatter'), EntryPoint(name='simple', value='stevedore.example.simple:Simple', group='stevedore.example.formatter'), EntryPoint(name='e1', value='stevedore.tests.test_extension:BrokenExtension', group='stevedore.test.extension'), EntryPoint(name='e2', value='stevedore.tests.notfound:UnimportableExtension', group='stevedore.test.extension'), EntryPoint(name='t1', value='stevedore.tests.test_extension:FauxExtension', group='stevedore.test.extension'), EntryPoint(name='t2', value='stevedore.tests.test_extension:FauxExtension', group='stevedore.test.extension'), EntryPoint(name='cygdb', value='Cython.Debugger.Cygdb:main', group='console_scripts'), EntryPoint(name='cython', value='Cython.Compiler.Main:setuptools_main', group='console_scripts'), EntryPoint(name='cythonize', value='Cython.Build.Cythonize:main', group='console_scripts'), EntryPoint(name='wit', value='tensorboard_plugin_wit.wit_plugin_loader:WhatIfToolPluginLoader', group='tensorboard_plugins'), EntryPoint(name='hook-dirs', value='pygame.__pyinstaller:get_hook_dirs', group='pyinstaller40'), EntryPoint(name='alias', value='setuptools.command.alias:alias', group='distutils.commands'), EntryPoint(name='bdist_egg', value='setuptools.command.bdist_egg:bdist_egg', group='distutils.commands'), EntryPoint(name='bdist_rpm', value='setuptools.command.bdist_rpm:bdist_rpm', group='distutils.commands'), EntryPoint(name='build', value='setuptools.command.build:build', group='distutils.commands'), EntryPoint(name='build_clib', value='setuptools.command.build_clib:build_clib', group='distutils.commands'), EntryPoint(name='build_ext', value='setuptools.command.build_ext:build_ext', group='distutils.commands'), EntryPoint(name='build_py', value='setuptools.command.build_py:build_py', group='distutils.commands'), EntryPoint(name='develop', value='setuptools.command.develop:develop', group='distutils.commands'), EntryPoint(name='dist_info', value='setuptools.command.dist_info:dist_info', group='distutils.commands'), EntryPoint(name='easy_install', value='setuptools.command.easy_install:easy_install', group='distutils.commands'), EntryPoint(name='editable_wheel', value='setuptools.command.editable_wheel:editable_wheel', group='distutils.commands'), EntryPoint(name='egg_info', value='setuptools.command.egg_info:egg_info', group='distutils.commands'), EntryPoint(name='install', value='setuptools.command.install:install', group='distutils.commands'), EntryPoint(name='install_egg_info', value='setuptools.command.install_egg_info:install_egg_info', group='distutils.commands'), EntryPoint(name='install_lib', value='setuptools.command.install_lib:install_lib', group='distutils.commands'), EntryPoint(name='install_scripts', value='setuptools.command.install_scripts:install_scripts', group='distutils.commands'), EntryPoint(name='rotate', value='setuptools.command.rotate:rotate', group='distutils.commands'), EntryPoint(name='saveopts', value='setuptools.command.saveopts:saveopts', group='distutils.commands'), EntryPoint(name='sdist', value='setuptools.command.sdist:sdist', group='distutils.commands'), EntryPoint(name='setopt', value='setuptools.command.setopt:setopt', group='distutils.commands'), EntryPoint(name='test', value='setuptools.command.test:test', group='distutils.commands'), EntryPoint(name='upload_docs', value='setuptools.command.upload_docs:upload_docs', group='distutils.commands'), EntryPoint(name='dependency_links', value='setuptools.dist:assert_string_list', group='distutils.setup_keywords'), EntryPoint(name='eager_resources', value='setuptools.dist:assert_string_list', group='distutils.setup_keywords'), EntryPoint(name='entry_points', value='setuptools.dist:check_entry_points', group='distutils.setup_keywords'), EntryPoint(name='exclude_package_data', value='setuptools.dist:check_package_data', group='distutils.setup_keywords'), EntryPoint(name='extras_require', value='setuptools.dist:check_extras', group='distutils.setup_keywords'), EntryPoint(name='include_package_data', value='setuptools.dist:assert_bool', group='distutils.setup_keywords'), EntryPoint(name='install_requires', value='setuptools.dist:check_requirements', group='distutils.setup_keywords'), EntryPoint(name='namespace_packages', value='setuptools.dist:check_nsp', group='distutils.setup_keywords'), EntryPoint(name='package_data', value='setuptools.dist:check_package_data', group='distutils.setup_keywords'), EntryPoint(name='packages', value='setuptools.dist:check_packages', group='distutils.setup_keywords'), EntryPoint(name='python_requires', value='setuptools.dist:check_specifier', group='distutils.setup_keywords'), EntryPoint(name='setup_requires', value='setuptools.dist:check_requirements', group='distutils.setup_keywords'), EntryPoint(name='test_loader', value='setuptools.dist:check_importable', group='distutils.setup_keywords'), EntryPoint(name='test_runner', value='setuptools.dist:check_importable', group='distutils.setup_keywords'), EntryPoint(name='test_suite', value='setuptools.dist:check_test_suite', group='distutils.setup_keywords'), EntryPoint(name='tests_require', value='setuptools.dist:check_requirements', group='distutils.setup_keywords'), EntryPoint(name='use_2to3', value='setuptools.dist:invalid_unless_false', group='distutils.setup_keywords'), EntryPoint(name='zip_safe', value='setuptools.dist:assert_bool', group='distutils.setup_keywords'), EntryPoint(name='PKG-INFO', value='setuptools.command.egg_info:write_pkg_info', group='egg_info.writers'), EntryPoint(name='dependency_links.txt', value='setuptools.command.egg_info:overwrite_arg', group='egg_info.writers'), EntryPoint(name='depends.txt', value='setuptools.command.egg_info:warn_depends_obsolete', group='egg_info.writers'), EntryPoint(name='eager_resources.txt', value='setuptools.command.egg_info:overwrite_arg', group='egg_info.writers'), EntryPoint(name='entry_points.txt', value='setuptools.command.egg_info:write_entries', group='egg_info.writers'), EntryPoint(name='namespace_packages.txt', value='setuptools.command.egg_info:overwrite_arg', group='egg_info.writers'), EntryPoint(name='requires.txt', value='setuptools.command.egg_info:write_requirements', group='egg_info.writers'), EntryPoint(name='top_level.txt', value='setuptools.command.egg_info:write_toplevel_names', group='egg_info.writers'), EntryPoint(name='keywords', value='setuptools.dist:Distribution._finalize_setup_keywords', group='setuptools.finalize_distribution_options'), EntryPoint(name='parent_finalize', value='setuptools.dist:_Distribution.finalize_options', group='setuptools.finalize_distribution_options'), EntryPoint(name='py.test', value='pytest:console_main', group='console_scripts'), EntryPoint(name='pytest', value='pytest:console_main', group='console_scripts'), EntryPoint(name='swig', value='swig:swig', group='console_scripts'), EntryPoint(name='lightning.qubit', value='pennylane_lightning:LightningQubit', group='pennylane.plugins'), EntryPoint(name='imageio_download_bin', value='imageio.__main__:download_bin_main', group='console_scripts'), EntryPoint(name='imageio_remove_bin', value='imageio.__main__:remove_bin_main', group='console_scripts'), EntryPoint(name='__root__', value='shimmy.registration:register_gymnasium_envs', group='gymnasium.envs'), EntryPoint(name='pyrsa-decrypt', value='rsa.cli:decrypt', group='console_scripts'), EntryPoint(name='pyrsa-encrypt', value='rsa.cli:encrypt', group='console_scripts'), EntryPoint(name='pyrsa-keygen', value='rsa.cli:keygen', group='console_scripts'), EntryPoint(name='pyrsa-priv2pub', value='rsa.util:private_to_public', group='console_scripts'), EntryPoint(name='pyrsa-sign', value='rsa.cli:sign', group='console_scripts'), EntryPoint(name='pyrsa-verify', value='rsa.cli:verify', group='console_scripts'), EntryPoint(name='tensorboard', value='tensorboard.main:run_main', group='console_scripts'), EntryPoint(name='projector', value='tensorboard.plugins.projector.projector_plugin:ProjectorPlugin', group='tensorboard_plugins'), EntryPoint(name='tqdm', value='tqdm.cli:main', group='console_scripts'), EntryPoint(name='clifford.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisClifford', group='qiskit.synthesis'), EntryPoint(name='linear_function.default', value='qiskit.transpiler.passes.synthesis.high_level_synthesis:DefaultSynthesisLinearFunction', group='qiskit.synthesis'), EntryPoint(name='basic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:BasicSwapPassManager', group='qiskit.transpiler.routing'), EntryPoint(name='lookahead', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:LookaheadSwapPassManager', group='qiskit.transpiler.routing'), EntryPoint(name='none', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:NoneRoutingPassManager', group='qiskit.transpiler.routing'), EntryPoint(name='sabre', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:SabreSwapPassManager', group='qiskit.transpiler.routing'), EntryPoint(name='stochastic', value='qiskit.transpiler.preset_passmanagers.builtin_plugins:StochasticSwapPassManager', group='qiskit.transpiler.routing'), EntryPoint(name='aqc', value='qiskit.transpiler.synthesis.aqc.aqc_plugin:AQCSynthesisPlugin', group='qiskit.unitary_synthesis'), EntryPoint(name='default', value='qiskit.transpiler.passes.synthesis.unitary_synthesis:DefaultUnitarySynthesis', group='qiskit.unitary_synthesis'), EntryPoint(name='fonttools', value='fontTools.__main__:main', group='console_scripts'), EntryPoint(name='pyftmerge', value='fontTools.merge:main', group='console_scripts'), EntryPoint(name='pyftsubset', value='fontTools.subset:main', group='console_scripts'), EntryPoint(name='ttx', value='fontTools.ttx:main', group='console_scripts'), EntryPoint(name='__root__', value='gym_minigrid.__init__:register_minigrid_envs', group='gym.envs'), EntryPoint(name='torchpack', value='torchpack.launch:main', group='console_scripts'), EntryPoint(name='ninja', value='ninja:ninja', group='console_scripts'), EntryPoint(name='wsdump', value='websocket._wsdump:main', group='console_scripts'), EntryPoint(name='cffi_modules', value='cffi.setuptools_ext:cffi_modules', group='distutils.setup_keywords'), EntryPoint(name='pbr', value='pbr.cmd.main:main', group='console_scripts'), EntryPoint(name='pbr', value='pbr.core:pbr', group='distutils.setup_keywords'), EntryPoint(name='pbr.json', value='pbr.pbr_json:write_pbr_json', group='egg_info.writers'), EntryPoint(name='ale-import-roms', value='ale_py.scripts.import_roms:main', group='console_scripts'), EntryPoint(name='ALE', value='ale_py.gym:register_gym_envs', group='gym.envs'), EntryPoint(name='__internal__', value='ale_py.gym:register_legacy_gym_envs', group='gym.envs'), EntryPoint(name='numpy', value='numpy.array_api', group='array_api'), EntryPoint(name='f2py', value='numpy.f2py.f2py2e:main', group='console_scripts'), EntryPoint(name='f2py3', value='numpy.f2py.f2py2e:main', group='console_scripts'), EntryPoint(name='f2py3.10', value='numpy.f2py.f2py2e:main', group='console_scripts'), EntryPoint(name='hook-dirs', value='numpy:_pyinstaller_hooks_dir', group='pyinstaller40'), EntryPoint(name='__root__', value='minigrid.__init__:register_minigrid_envs', group='gymnasium.envs'), EntryPoint(name='convert-caffe2-to-onnx', value='caffe2.python.onnx.bin.conversion:caffe2_to_onnx', group='console_scripts'), EntryPoint(name='convert-onnx-to-caffe2', value='caffe2.python.onnx.bin.conversion:onnx_to_caffe2', group='console_scripts'), EntryPoint(name='torchrun', value='torch.distributed.run:main', group='console_scripts'), EntryPoint(name='markdown_py', value='markdown.__main__:run', group='console_scripts'), EntryPoint(name='abbr', value='markdown.extensions.abbr:AbbrExtension', group='markdown.extensions'), EntryPoint(name='admonition', value='markdown.extensions.admonition:AdmonitionExtension', group='markdown.extensions'), EntryPoint(name='attr_list', value='markdown.extensions.attr_list:AttrListExtension', group='markdown.extensions'), EntryPoint(name='codehilite', value='markdown.extensions.codehilite:CodeHiliteExtension', group='markdown.extensions'), EntryPoint(name='def_list', value='markdown.extensions.def_list:DefListExtension', group='markdown.extensions'), EntryPoint(name='extra', value='markdown.extensions.extra:ExtraExtension', group='markdown.extensions'), EntryPoint(name='fenced_code', value='markdown.extensions.fenced_code:FencedCodeExtension', group='markdown.extensions'), EntryPoint(name='footnotes', value='markdown.extensions.footnotes:FootnoteExtension', group='markdown.extensions'), EntryPoint(name='legacy_attrs', value='markdown.extensions.legacy_attrs:LegacyAttrExtension', group='markdown.extensions'), EntryPoint(name='legacy_em', value='markdown.extensions.legacy_em:LegacyEmExtension', group='markdown.extensions'), EntryPoint(name='md_in_html', value='markdown.extensions.md_in_html:MarkdownInHtmlExtension', group='markdown.extensions'), EntryPoint(name='meta', value='markdown.extensions.meta:MetaExtension', group='markdown.extensions'), EntryPoint(name='nl2br', value='markdown.extensions.nl2br:Nl2BrExtension', group='markdown.extensions'), EntryPoint(name='sane_lists', value='markdown.extensions.sane_lists:SaneListExtension', group='markdown.extensions'), EntryPoint(name='smarty', value='markdown.extensions.smarty:SmartyExtension', group='markdown.extensions'), EntryPoint(name='tables', value='markdown.extensions.tables:TableExtension', group='markdown.extensions'), EntryPoint(name='toc', value='markdown.extensions.toc:TocExtension', group='markdown.extensions'), EntryPoint(name='wikilinks', value='markdown.extensions.wikilinks:WikiLinkExtension', group='markdown.extensions'), EntryPoint(name='tabulate', value='tabulate:_main', group='console_scripts'), EntryPoint(name='pl-device-test', value='pennylane.devices.tests:cli', group='console_scripts'), EntryPoint(name='default.gaussian', value='pennylane.devices:DefaultGaussian', group='pennylane.plugins'), EntryPoint(name='default.mixed', value='pennylane.devices.default_mixed:DefaultMixed', group='pennylane.plugins'), EntryPoint(name='default.qubit', value='pennylane.devices:DefaultQubit', group='pennylane.plugins'), EntryPoint(name='default.qubit.autograd', value='pennylane.devices.default_qubit_autograd:DefaultQubitAutograd', group='pennylane.plugins'), EntryPoint(name='default.qubit.jax', value='pennylane.devices.default_qubit_jax:DefaultQubitJax', group='pennylane.plugins'), EntryPoint(name='default.qubit.tf', value='pennylane.devices.default_qubit_tf:DefaultQubitTF', group='pennylane.plugins'), EntryPoint(name='default.qubit.torch', value='pennylane.devices.default_qubit_torch:DefaultQubitTorch', group='pennylane.plugins'), EntryPoint(name='default.qutrit', value='pennylane.devices.default_qutrit:DefaultQutrit', group='pennylane.plugins'), EntryPoint(name='pip', value='pip._internal.cli.main:main', group='console_scripts'), EntryPoint(name='pip3', value='pip._internal.cli.main:main', group='console_scripts'), EntryPoint(name='pip3.9', value='pip._internal.cli.main:main', group='console_scripts'), EntryPoint(name='latex2text', value='pylatexenc.latex2text.__main__:main', group='console_scripts'), EntryPoint(name='latexencode', value='pylatexenc.latexencode.__main__:main', group='console_scripts'), EntryPoint(name='latexwalker', value='pylatexenc.latexwalker.__main__:main', group='console_scripts'), EntryPoint(name='isympy', value='isympy:main', group='console_scripts'), EntryPoint(name='google-oauthlib-tool', value='google_auth_oauthlib.tool.__main__:main [tool]', group='console_scripts'), EntryPoint(name='matplotlib', value='pandas:plotting._matplotlib', group='pandas_plotting_backends'), EntryPoint(name='estimator_ckpt_converter', value='tensorflow_estimator.python.estimator.tools.checkpoint_converter:main', group='console_scripts'), EntryPoint(name='import_pb_to_tensorboard', value='tensorflow.python.tools.import_pb_to_tensorboard:main', group='console_scripts'), EntryPoint(name='saved_model_cli', value='tensorflow.python.tools.saved_model_cli:main', group='console_scripts'), EntryPoint(name='tensorboard', value='tensorboard.main:run_main', group='console_scripts'), EntryPoint(name='tf_upgrade_v2', value='tensorflow.tools.compatibility.tf_upgrade_v2_main:main', group='console_scripts'), EntryPoint(name='tflite_convert', value='tensorflow.lite.python.tflite_convert:main', group='console_scripts'), EntryPoint(name='toco', value='tensorflow.lite.python.tflite_convert:main', group='console_scripts'), EntryPoint(name='toco_from_protos', value='tensorflow.lite.toco.python.toco_from_protos:main', group='console_scripts'), EntryPoint(name='pygmentize', value='pygments.cmdline:main', group='console_scripts'), EntryPoint(name='markdown-it', value='markdown_it.cli.parse:main', group='console_scripts'), EntryPoint(name='chardetect', value='chardet.cli.chardetect:main', group='console_scripts'), EntryPoint(name='keyring', value='keyring.cli:main', group='console_scripts'), EntryPoint(name='keyring', value='keyring.devpi_client', group='devpi_client'), EntryPoint(name='KWallet', value='keyring.backends.kwallet', group='keyring.backends'), EntryPoint(name='SecretService', value='keyring.backends.SecretService', group='keyring.backends'), EntryPoint(name='Windows', value='keyring.backends.Windows', group='keyring.backends'), EntryPoint(name='chainer', value='keyring.backends.chainer', group='keyring.backends'), EntryPoint(name='libsecret', value='keyring.backends.libsecret', group='keyring.backends'), EntryPoint(name='macOS', value='keyring.backends.macOS', group='keyring.backends'), EntryPoint(name='futurize', value='libfuturize.main:main', group='console_scripts'), EntryPoint(name='pasteurize', value='libpasteurize.main:main', group='console_scripts'), EntryPoint(name='mako', value='mako.ext.turbogears:TGPlugin', group='python.templating.engines'), EntryPoint(name='mako', value='mako.ext.pygmentplugin:MakoLexer', group='pygments.lexers'), EntryPoint(name='html+mako', value='mako.ext.pygmentplugin:MakoHtmlLexer', group='pygments.lexers'), EntryPoint(name='xml+mako', value='mako.ext.pygmentplugin:MakoXmlLexer', group='pygments.lexers'), EntryPoint(name='js+mako', value='mako.ext.pygmentplugin:MakoJavascriptLexer', group='pygments.lexers'), EntryPoint(name='css+mako', value='mako.ext.pygmentplugin:MakoCssLexer', group='pygments.lexers'), EntryPoint(name='mako', value='mako.ext.babelplugin:extract [babel]', group='babel.extractors'), EntryPoint(name='mako', value='mako.ext.linguaplugin:LinguaMakoExtractor [lingua]', group='lingua.extractors'), EntryPoint(name='mako-render', value='mako.cmd:cmdline', group='console_scripts'), EntryPoint(name='ua', value='uaclient.cli:main', group='console_scripts'), EntryPoint(name='ubuntu-advantage', value='uaclient.cli:main', group='console_scripts'), EntryPoint(name='modify_cache_after', value='language_support_pkgs:apt_cache_add_language_packs', group='aptdaemon.plugins'), EntryPoint(name='what_provides', value='language_support_pkgs:packagekit_what_provides_locale', group='packagekit.apt.plugins'), EntryPoint(name='distro', value='distro.distro:main', group='console_scripts')]

Does that help?

pseudo-rnd-thoughts commented 1 year ago

Looking through the SelectableGroups.load function (https://github.com/python/cpython/blob/5342f5e713e0cc45b6f226d2d053a8cde1b4d68e/Lib/importlib/metadata/__init__.py#L467)

The issue is with one of the group values not being a str or byte like


import itertools
import importlib.metadata as mt

for entry_point in itertools.chain.from_iterable(dist.entry_points for dist in mt.distributions()):
     group = entry_point.group
     try:
          normalized_name = re.sub(r"[-_.]+", "-", group).lower().replace('-', '_')
     except TypeError as e:
           print(entry_point)
           print(e)

Try this

JustinS6626 commented 1 year ago

I tried that, but for some reason, it does not print anything. Is there a way to duplicate the process of importing gymnasium more closely in terms of what gets called?

JustinS6626 commented 1 year ago

Is there a way to check the entry point group for a package by name and see if that is package that is causing the problem? I'm wondering if for a certain package, the entry point group is actually being returned as a Nonetype. The problem started after I installed dopamine-rl, so I suspect the problem may be in one of the packages listed here: https://github.com/google/dopamine/blob/master/requirements.txt

JustinS6626 commented 1 year ago

Do you think it might help to uninstall Python3.10 completely and start fresh? I didn't want to resort to that, but I would be willing to do it if necessary. I am up against a deadline, so I really need to get this resolved.

pseudo-rnd-thoughts commented 1 year ago

Could you confirm the suspect error and you can replicate it with the following code. eps is itertools.chain.from_iterable(dist.entry_points for dist in mt.distributions()).

by_group = operator.attrgetter('group')
ordered = sorted(eps, key=by_group)

Then if you compute the key value for each element, see if that raises the error

JustinS6626 commented 1 year ago

Thanks! Just to make sure I'm doing this correctly, what's the import for operator?

pseudo-rnd-thoughts commented 1 year ago

import operator I believe

JustinS6626 commented 1 year ago

Right now I think I might go the route of removing my python3.10 installation and rebuilding the ecosystem from scratch. Would that be a safe and viable approach? In particular, would it get rid of the files that are causing the problem?

pseudo-rnd-thoughts commented 1 year ago

I just realised that I got this wrong on where the error is

import importlib.metadata as mt
import operator

key = operator.attrgetter('_normalized_name')
for distribution in mt.distributions():
    print(distribution)  # distribution.name
    print(key(distribution))

If this does produce the error, could you use distribution.name to see the actual name of the distributor with the issue

JustinS6626 commented 1 year ago

Thanks! I actually manage to fix the issue by installing python3.11 and continuing on with that, but I will keep this in mind if I encounter this issue again. In the meantime, I should probably let the Kubernetes devs know that Kubernetes has a conflict with Gymnasium.