Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ImportError: No module named gi #16

Open
aparcar opened this issue Aug 2, 2019 · 6 comments
Open

ImportError: No module named gi #16

aparcar opened this issue Aug 2, 2019 · 6 comments

Comments

@aparcar
Copy link

aparcar commented Aug 2, 2019

I'm getting the following error when trying to run the CLI

a@reboot:~/src/signal-curses$ make install
Makefile:8: java installed
Makefile:18: signal-cli installed
Makefile:27: libunixsocket-java installed
Makefile:35: python-gobject installed
Makefile:43: pkg-config installed
Makefile:47: installing pipenv
pipenv install
Installing dependencies from Pipfile.lock (568cf4)…
  🐍   ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 7/7 — 00:00:00
To activate this project's virtualenv, run the following:
 $ pipenv shell
a@reboot:~/src/signal-curses$ pipenv shell
Spawning environment shell (/bin/bash). Use 'exit' to leave.
a@reboot:~/src/signal-curses$ . /home/a/.local/share/virtualenvs/signal-curses-MYuYIKoq/bin/activate
(signal-curses-MYuYIKoq) a@reboot:~/src/signal-curses$ python3 main.py 
Traceback (most recent call last):
  File "main.py", line 19, in <module>
    import scurses
  File "/home/a/src/signal-curses/scurses/__init__.py", line 25, in <module>
    import pydbus
  File "/home/a/.local/share/virtualenvs/signal-curses-MYuYIKoq/lib/python3.7/site-packages/pydbus/__init__.py", line 1, in <module>
    from .bus import SystemBus, SessionBus, connect
  File "/home/a/.local/share/virtualenvs/signal-curses-MYuYIKoq/lib/python3.7/site-packages/pydbus/bus.py", line 1, in <module>
    from gi.repository import Gio
  File "/home/a/.local/share/virtualenvs/signal-curses-MYuYIKoq/lib/python3.7/site-packages/vext/gatekeeper/__init__.py", line 204, in load_module
    raise ImportError("No module named %s" % modulename)
ImportError: No module named gi
(signal-curses-MYuYIKoq) a@reboot:~/src/signal-curses$ 
@jwoglom
Copy link
Owner

jwoglom commented Aug 3, 2019

Hi, this is an issue relating to vext which allows for the Gtk3 gi dependency to be accessed inside the virtualenv. My guess is you're missing some dependency for gi, make sure that you have all of the dependencies specified in the Makefile installed:

sudo apt-get install python-gobject libgirepository1.0-dev libglib2.0-dev libcairo2-dev libffi-dev python3-gi

@RaghavRao
Copy link

you can also do:

pip install vext
pip install vext.gi

@elsehow
Copy link

elsehow commented May 23, 2020

@aparcar Did you ever resolve this issue? I'm experiencing the same thing. (The above suggestions haven't worked for me).

@elsehow
Copy link

elsehow commented May 23, 2020

Nevermind, I was able to resolve this problem by running

pipenv shell
pip uninstall vext
pip uninstall vext.gi
pip install vext
pip install vext.gi

Not sure why this worked, but hope it helps someone else.

@keraba
Copy link

keraba commented Jan 15, 2021

I'm seeing this too, after trying everything mentioned above. This is buster on crostini.

keraba@penguin ~/signal-curses> dpkg -l | egrep python-gobject|libgirepo|libglib2|libcairo2|libffi-dev|python3-gi|libunixs
ii libcairo2:arm64 1.16.0-4 arm64 Cairo 2D vector graphics library
ii libcairo2-dev:arm64 1.16.0-4 arm64 Development files for the Cairo 2D graphics library
ii libffi-dev:arm64 3.2.1-9 arm64 Foreign Function Interface library (development files)
ii libgirepository-1.0-1:arm64 1.58.3-2 arm64 Library for handling GObject introspection data (runtime library)
ii libgirepository1.0-dev:arm64 1.58.3-2 arm64 Library for handling GObject introspection data (development files)
ii libglib2.0-0:arm64 2.58.3-2+deb10u2 arm64 GLib library of C routines
ii libglib2.0-bin 2.58.3-2+deb10u2 arm64 Programs for the GLib library
ii libglib2.0-data 2.58.3-2+deb10u2 all Common files for GLib library
ii libglib2.0-dev:arm64 2.58.3-2+deb10u2 arm64 Development files for the GLib library
ii libglib2.0-dev-bin 2.58.3-2+deb10u2 arm64 Development utilities for the GLib library
ii libunixsocket-java 0.8.1-1 arm64 Unix socket API and bindings for Java
ii python-gobject 3.30.4-1 all Python 2.x bindings for GObject - transitional package
ii python-gobject-2 2.28.6-13+b1 arm64 deprecated static Python bindings for the GObject library
ii python3-gi 3.30.4-1 arm64 Python 3 bindings for gobject-introspection libraries
keraba@penguin ~/signal-curses> pipenv --rm
No virtualenv has been created for this project yet!
Aborted!
keraba@penguin ~/signal-curses> make install
Makefile:8: java installed
Makefile:18: signal-cli installed
Makefile:27: libunixsocket-java installed
Makefile:35: python-gobject installed
Makefile:43: pkg-config installed
Makefile:47: installing pipenv
pipenv install
Creating a virtualenv for this project...
Pipfile: /home/keraba/signal-curses/Pipfile
Using /usr/bin/python3 (3.7.3) to create virtualenv...
⠸ Creating virtual environment...created virtual environment CPython3.7.3.final.0-64 in 544ms
creator CPython3Posix(dest=/home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5, clear=False, no_vcs_ignore=False, global=False)
seeder FromAppData(download=False, pip=bundle, setuptools=bundle, wheel=bundle, via=copy, app_data_dir=/home/keraba/.local/share/virtualenv)
added seed packages: pip==20.3.3, setuptools==51.1.2, wheel==0.36.2
activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

✔ Successfully created virtual environment!
Virtualenv location: /home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5
Installing dependencies from Pipfile.lock (568cf4)...
An error occurred while installing vext.gi==0.7.0 --hash=sha256:ec9fab2e736b4466c08460c063ea362782e9a0f63544faa9d5681308dc74bb3d! Will try again.
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 7/7 — 00:00:48
Installing initially failed dependencies...
☤ ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 0/0 — 00:00:00
To activate this project's virtualenv, run pipenv shell.
Alternatively, run a command inside the virtualenv with pipenv run.
keraba@penguin ~/signal-curses> pipenv shell
Launching subshell in virtual environment...
keraba@penguin ~/signal-curses> . /home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/bin/activate
(signal-curses) keraba@penguin ~/signal-curses> python3 main.py
Traceback (most recent call last):
File "main.py", line 19, in
import scurses
File "/home/keraba/signal-curses/scurses/init.py", line 25, in
import pydbus
File "/home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages/pydbus/init.py", line 1, in
from .bus import SystemBus, SessionBus, connect
File "/home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages/pydbus/bus.py", line 1, in
from gi.repository import Gio
File "/home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages/vext/gatekeeper/init.py", line 204, in load_module
raise ImportError("No module named %s" % modulename)
ImportError: No module named gi
(signal-curses) keraba@penguin ~/signal-curses> pip uninstall vext.gi
Found existing installation: vext.gi 0.7.4
Uninstalling vext.gi-0.7.4:
Would remove:
/home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages/vext.gi-0.7.4.dist-info/*
/home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/share/vext/specs/gi.vext
Proceed (y/n)? y
Successfully uninstalled vext.gi-0.7.4
(signal-curses) keraba@penguin ~/signal-curses> pip install vext
Collecting vext
Using cached vext-0.7.4-cp37-none-any.whl
Requirement already satisfied: ruamel.yaml>=0.11.10 in /home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages (from vext) (0.16.0)
Requirement already satisfied: ruamel.yaml.clib in /home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages (from ruamel.yaml>=0.11.10->vext) (0.1.0)
Installing collected packages: vext
Successfully installed vext-0.7.4
(signal-curses) keraba@penguin ~/signal-curses> pip install vext.gi
Collecting vext.gi
Using cached vext.gi-0.7.4-py3-none-any.whl
Requirement already satisfied: vext>=0.7.4 in /home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages (from vext.gi) (0.7.4)
Requirement already satisfied: ruamel.yaml>=0.11.10 in /home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages (from vext>=0.7.4->vext.gi) (0.16.0)
Requirement already satisfied: ruamel.yaml.clib in /home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages (from ruamel.yaml>=0.11.10->vext>=0.7.4->vext.gi) (0.1.0)
Installing collected packages: vext.gi
Successfully installed vext.gi-0.7.4
(signal-curses) keraba@penguin ~/signal-curses> python3 main.py
Traceback (most recent call last):
File "main.py", line 19, in
import scurses
File "/home/keraba/signal-curses/scurses/init.py", line 25, in
import pydbus
File "/home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages/pydbus/init.py", line 1, in
from .bus import SystemBus, SessionBus, connect
File "/home/keraba/.local/share/virtualenvs/signal-curses-q0GP4Ph5/lib/python3.7/site-packages/pydbus/bus.py", line 1, in
from gi.repository import Gio
ModuleNotFoundError: No module named 'gi'

Based on the other comments, it seems like this 'vext' is a weak link. Maybe this could be changed to not rely on its implicit behavior?

@keraba
Copy link

keraba commented Jan 16, 2021

It appears that pipenv is not needed. I simply:

pip3 install npyscreen
pip3 install PyQRCode
python3 main.py -u ...

and it works fine. So I'm wondering why the instructions steer users towards pipenv.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants