riverrun / genxword

Crossword generator written in Python.
GNU General Public License v3.0
162 stars 40 forks source link

ModuleNotFoundError: No module named 'gi' #12

Closed Lucas-C closed 6 years ago

Lucas-C commented 6 years ago

Hi.

I faced this error under Windows, using Cygwin, after installing the package with pip:

$ genxword --help
Traceback (most recent call last):
  File "/usr/bin/genxword", line 7, in <module>
    from genxword.cli import main
  File "/usr/lib/python3.6/site-packages/genxword/cli.py", line 21, in <module>
    from .control import _, Genxword, PY2
  File "/usr/lib/python3.6/site-packages/genxword/control.py", line 24, in <module>
    from .calculate import Crossword, Exportfiles
  File "/usr/lib/python3.6/site-packages/genxword/calculate.py", line 22, in <module>
    from gi.repository import Pango, PangoCairo
ModuleNotFoundError: No module named 'gi'
Lucas-C commented 6 years ago

I should have RTFM, I'm going to try to install the packages mentionned in the README.

Lucas-C commented 6 years ago

I solved the issue by installing the following Cygwin & Python packages (all may not be needed):

$ apt-cyg install gobject-introspection libglib2.0-devel libpango1.0-devel python-cairo-devel python-gi python-gobject-devel
$ pip install PyGObject

That downloaded looots of dependencies though :)

And this time I get another kind of error:

Traceback (most recent call last):
  File "/usr/bin/genxword", line 7, in <module>
    from genxword.cli import main
  File "/usr/lib/python3.6/site-packages/genxword/cli.py", line 21, in <module>
    from .control import _, Genxword, PY2
  File "/usr/lib/python3.6/site-packages/genxword/control.py", line 24, in <module>
    from .calculate import Crossword, Exportfiles
  File "/usr/lib/python3.6/site-packages/genxword/calculate.py", line 22, in <module>
    from gi.repository import Pango, PangoCairo
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
  File "/usr/lib/python3.6/site-packages/gi/importer.py", line 145, in load_module
    importlib.import_module('gi.repository.' + dep.split("-")[0])
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
  File "/usr/lib/python3.6/site-packages/gi/importer.py", line 145, in load_module
    importlib.import_module('gi.repository.' + dep.split("-")[0])
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 978, in _gcd_import
  File "<frozen importlib._bootstrap>", line 961, in _find_and_load
  File "<frozen importlib._bootstrap>", line 950, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 646, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 616, in _load_backward_compatible
  File "/usr/lib/python3.6/site-packages/gi/importer.py", line 146, in load_module
    dynamic_module = load_overrides(introspection_module)
  File "/usr/lib/python3.6/site-packages/gi/overrides/__init__.py", line 125, in load_overrides
    override_mod = importlib.import_module(override_package_name)
  File "/usr/lib/python3.6/importlib/__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/usr/lib/python3.6/site-packages/gi/overrides/GLib.py", line 26, in <module>
    from .._ossighelper import wakeup_on_signal, register_sigint_fallback
  File "/usr/lib/python3.6/site-packages/gi/_ossighelper.py", line 153, in <module>
    pydll = create_pythonapi()
  File "/usr/lib/python3.6/site-packages/gi/_ossighelper.py", line 148, in create_pythonapi
    return ctypes.PyDLL("libpython%d.%d.dll" % sys.version_info[:2])
  File "/usr/lib/python3.6/ctypes/__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: No such file or directory
Lucas-C commented 6 years ago

The issue only happened with Python 3, so I switched to Python 2:

$ python2 -c 'import ctypes, sys; ctypes.PyDLL("libpython%d.%d.dll" % sys.version_info[:2])'
$ python3 -c 'import ctypes, sys; ctypes.PyDLL("libpython%d.%d.dll" % sys.version_info[:2])'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.6/ctypes/__init__.py", line 348, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: No such file or directory

And it now works !

$ genxword -o "Norwegian Blue" 2000_comwords_ENG.txt n
riverrun commented 6 years ago

Well done!

It's good to hear it's still working :)

Lucas-C commented 6 years ago

Yeah, I may not have been very smart to try to install this under Windows. I should have known Cygwin and GTK often don't mix easily :)

By the way I'm writing an article on open source puzzle generators. It will be published in the following weeks on https://linuxfr.org and will mention genxword.

riverrun commented 6 years ago

Cool - and thanks for the link.