Python Forum
Imports that work with Python 3.8 fail with 3.9 and 3.10 - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Imports that work with Python 3.8 fail with 3.9 and 3.10 (/thread-36617.html)



Imports that work with Python 3.8 fail with 3.9 and 3.10 - 4slam - Mar-10-2022

OS: Ubuntu 20.04
Python 3.8, 3.9, 3.10 built from source without errors.

Imports work as expected with Python 3.8:
$ python
Python 3.8.12 (default, Mar  3 2022, 04:28:02)
[GCC 9.3.0] on linux
>>> import gi
>>> gi.require_version('AyatanaAppIndicator3', '0.1')
>>> from gi.repository import AyatanaAppIndicator3
>>> AyatanaAppIndicator3
<IntrospectionModule 'AyatanaAppIndicator3' from '/usr/lib/x86_64-linux-gnu/girepository-1.0/AyatanaAppIndicator3-0.1.typelib'>
>>>
>>> gi.require_version('AppIndicator3', '0.1')
>>> from gi.repository import AppIndicator3
>>> AppIndicator3
<IntrospectionModule 'AppIndicator3' from '/usr/lib/girepository-1.0/AppIndicator3-0.1.typelib'>
>>>
The same imports give errors with Python 3.10 (same with 3.9):
$ python
Python 3.10.2 (main, Mar  3 2022, 03:40:42) [GCC 9.3.0] on linux
>>> import gi
>>> gi.require_version('AyatanaAppIndicator3', '0.1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/path/to/venv10/lib/python3.10/site-packages/gi/__init__.py", line 126, in require_version
    raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace AyatanaAppIndicator3 not available
>>> from gi.repository import AyatanaAppIndicator3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/path/to/venv10/lib/python3.10/site-packages/gi/importer.py", line 131, in load_module
    raise ImportError('cannot import name %s, '
ImportError: cannot import name AyatanaAppIndicator3, introspection typelib not found
>>>
>>> gi.require_version('AppIndicator3', '0.1')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/path/to/venv10/lib/python3.10/site-packages/gi/__init__.py", line 126, in require_version
    raise ValueError('Namespace %s not available' % namespace)
ValueError: Namespace AppIndicator3 not available
>>> from gi.repository import AppIndicator3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/path/to/venv10/lib/python3.10/site-packages/gi/importer.py", line 131, in load_module
    raise ImportError('cannot import name %s, '
ImportError: cannot import name AppIndicator3, introspection typelib not found
>>>
How can I get the imports to work with Python 3.9/3.10?


RE: Imports that work with Python 3.8 fail with 3.9 and 3.10 - snippsat - Mar-11-2022

It look for that file external in OS,then is probably in sys.path of Python 3.8.
Open Python 3.8 and see what's in sys.path.
So can add to sys.path this is where Python look for .py or external file/dir.
Example:
tom@tom-VirtualBox:~$ python --version
Python 3.10.2

tom@tom-VirtualBox:~$ python 
Python 3.10.2 (main, Jan 31 2022, 15:25:53) [GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> 
>>> sys.path
['', '/home/tom/.pyenv/versions/3.10.2/lib/python310.zip', '/home/tom/.pyenv/versions/3.10.2/lib/python3.10', '/home/tom/.pyenv/versions/3.10.2/lib/python3.10/lib-dynload', '/home/tom/.pyenv/versions/3.10.2/lib/python3.10/site-packages']
>>> 
>>> # Add to path
>>> sys.path.append('/usr/lib/x86_64-linux-gnu/girepository-1.0/AyatanaAppIndicator3-0.1.typelib')
>>> # Test again
>>> sys.path
['', '/home/tom/.pyenv/versions/3.10.2/lib/python310.zip', '/home/tom/.pyenv/versions/3.10.2/lib/python3.10', '/home/tom/.pyenv/versions/3.10.2/lib/python3.10/lib-dynload', '/home/tom/.pyenv/versions/3.10.2/lib/python3.10/site-packages', '/usr/lib/x86_64-linux-gnu/girepository-1.0/AyatanaAppIndicator3-0.1.typelib']
# Now is same session try import again
>>> exit()
So sys.path.append is temporally to permanently look into PYTHONPATH or better use site module.
Here and older post about using site is for Windows but work the same on Linux.

4slam Wrote:Python 3.8, 3.9, 3.10 built from source without errors
Can advice to look into pyenv Simple Python Version Management.