pyEPR
pyEPR copied to clipboard
Running pyEPR with python 3.10
While running pyepr with python 3.10, importing ImportError occurred related to attrdict while importing pyepr.
My code was just "import pyEPR as epr" and I attached an error message below.
This problem is mainly about the syntax
from collections import Mapping
is deprecated in python 3.10 and replaced to
from collections.abc import Mapping
.
While searching in Google, I found some news about attrdict is no more maintained, and I think this means we cannot expect whether they would fix this issue with python 3.10. Is there any plan to replace the attrdict library with another library or solve this issue differently?
Thanks.
ImportError Traceback (most recent call last)
File ~\Anaconda3\envs\pyepr_attrdict_test\lib\site-packages\pyEPR_init_.py:78, in
File ~\Anaconda3\envs\pyepr_attrdict_test\lib\site-packages\attrdict_init_.py:5, in
File ~\Anaconda3\envs\pyepr_attrdict_test\lib\site-packages\attrdict\mapping.py:4, in
ImportError: cannot import name 'Mapping' from 'collections' (C:\Users\aass98998\Anaconda3\envs\pyepr_attrdict_test\lib\collections_init_.py)
During handling of the above exception, another exception occurred:
ImportError Traceback (most recent call last) Input In [3], in <cell line: 1>() ----> 1 import pyEPR as epr
File ~\Anaconda3\envs\pyepr_attrdict_test\lib\site-packages\pyEPR_init_.py:80, in AttrDict
.
81 AttrDict is in PyPI, so it can be installed directly
82 (https://github.com/bcj/AttrDict) using:
83 $ pip install attrdict""")
85 ##############################################################################
86 # Python header
88 author = "Zlatko Minev, Zaki Leghas, and the pyEPR team"
ImportError: Please install python package AttrDict
.
AttrDict is in PyPI, so it can be installed directly
(https://github.com/bcj/AttrDict) using:
$ pip install attrdict
👏👏👏 You are awesome! Thank you for making your first issue to pyEPR ' first issue
I would like to work on this issue. Can you assign me to this issue?
Hi @GyeonghunKim, very glad to hear you want to contribute on this issue (and thanks for making it)! Let me know if you run into any problems
After implementing these solutions in Windows10&Python3.10.4, Qiskit-Metal started working:
- anaconda3\envs\***\Lib\site-packages\attrdict (collections --> collections.abc (modify in all files)) [corrected module: https://github.com/qfizik/AttrDict]
- pyEPR (anaconda3\envs\***\Lib\site-packages\pyEPR_init_.py: try: --> import collections.abc try: collections = collections.abc from attrdict.dictionary import AttrDict as Dict except AttributeError: collections = collections ) [corrected module: https://github.com/qfizik/pyEPR/blob/master/pyEPR/init.py]
- Quantum-Metal (anaconda3\envs\***\Lib\site-packages\qiskit_metal_gui\widgets\create_component_window\parameter_entry_window.py: from collections import OrderedDict, Callable --> from collections import OrderedDict from collections.abc import Callable ) [corrected module: https://github.com/qfizik/qiskit-metal/blob/main/qiskit_metal/_gui/widgets/create_component_window/parameter_entry_window.py]
@WhiteSymmetry Thanks for your comment. This method definitely works for individual users. However, without solving this problem inside pyEPR, every user should do that procedure every time they install the pyEPR and pyEPR-related libraries (such as qiskit-metal). Also, I think this is not appropriate for the CI/CD process.