-
Notifications
You must be signed in to change notification settings - Fork 386
Closed
Labels
Description
TensorFlow 1.14.0 was released couple of days ago and it isn't unfortunately compatible with sacred. Tensorflow package in 1.14.0 has __spec__
property set to None, which results in exception in pkgutil.find_loader
when one imprts sacred.
I'm not sure whether this is a bug/feature on tensorflow, however the fact that it breaks sacred is unfortunate.
$ docker run -it tensorflow/tensorflow:1.14.0-py3 bash
root@d70a18c72a0b:/# pip install sacred
Successfully installed colorama-0.4.1 docopt-0.6.2 jsonpickle-0.9.6 munch-2.3.2 packaging-19.0 py-cpuinfo-5.0.0 pyparsing-2.4.0 sacred-0.7.5
root@d70a18c72a0b:/# python3
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
>>> tf.__version__
'1.14.0'
>>> import sacred
Traceback (most recent call last):
File "/usr/lib/python3.6/pkgutil.py", line 490, in find_loader
spec = importlib.util.find_spec(fullname)
File "/usr/lib/python3.6/importlib/util.py", line 102, in find_spec
raise ValueError('{}.__spec__ is None'.format(name))
ValueError: tensorflow.__spec__ is None
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.6/dist-packages/sacred/__init__.py", line 13, in <module>
from sacred.experiment import Experiment
File "/usr/local/lib/python3.6/dist-packages/sacred/experiment.py", line 13, in <module>
from sacred.arg_parser import format_usage, get_config_updates
File "/usr/local/lib/python3.6/dist-packages/sacred/arg_parser.py", line 16, in <module>
from sacred.serializer import restore
File "/usr/local/lib/python3.6/dist-packages/sacred/serializer.py", line 8, in <module>
from sacred import optional as opt
File "/usr/local/lib/python3.6/dist-packages/sacred/optional.py", line 40, in <module>
has_tensorflow = modules_exist("tensorflow")
File "/usr/local/lib/python3.6/dist-packages/sacred/utils.py", line 656, in modules_exist
return all(module_exists(m) for m in modnames)
File "/usr/local/lib/python3.6/dist-packages/sacred/utils.py", line 656, in <genexpr>
return all(module_exists(m) for m in modnames)
File "/usr/local/lib/python3.6/dist-packages/sacred/utils.py", line 652, in module_exists
return pkgutil.find_loader(modname) is not None
File "/usr/lib/python3.6/pkgutil.py", line 496, in find_loader
raise ImportError(msg.format(fullname, type(ex), ex)) from ex
ImportError: Error while finding loader for 'tensorflow' (<class 'ValueError'>: tensorflow.__spec__ is None)
bzamecnik, yet-another-account, SumNeuron, brucechou1983 and racinmat