hsolbrig / PyShEx

ShEx interpreter for ShEx 2.0
Creative Commons Zero v1.0 Universal
25 stars 10 forks source link

WDI using pyshex is failing #39

Open andrawaag opened 5 years ago

andrawaag commented 5 years ago

as per https://github.com/SuLab/GeneWikiCentral/issues/110 a recent change in prefilxlib made WDI fail.

py3.6.egg/wikidataintegrator/wdi_core.py", line 16, in <module> File "/var/lib/jenkins/workspace/DO_Robot/venv/local/lib/python3.6/site-packages/PyShEx-0.7.3-py3.6.egg/pyshex/__init__.py", line 1, in <module> File "/var/lib/jenkins/workspace/DO_Robot/venv/local/lib/python3.6/site-packages/PyShEx-0.7.3-py3.6.egg/pyshex/prefixlib.py", line 4, in <module> ModuleNotFoundError: No module named 'pyshexc'

hsolbrig commented 5 years ago

The problem is a combination of a bug in python 3.6 (and later?) setup code and the fact that we currently publish on pypi using python setup.py sdist

The docker image used by wikidataintegrator has a flag set to not generate python binary (.pyc) images. The setup.py bug manifests as, if it gets a source distro (w/o .pyc's) and this flag is set, python setup.py install stops the install halfway through, making it look like the module has been installed (the .egg exists in site-packages) without actually adding the module. Wikidataintegrator (for reasons not fully understood) follows the python setup.py install with pip install -r requirements.txt. Since the setup step shows that pyshexc was installed, pip does not re-install.

A short term workaround is that wikidataintegrator needs to do pip install before it does python setup.py install, assuming that the latter command is needed at all.

A longer term fix is to change the install process to use python setup.py bdist instead of sdist.