1

I have uninstalled and re-installed the latest version of datatable from the repo

16:42:49/seirdc2.March8.in $sudo pip3 install 'datatable==0.10.1' 
Successfully installed datatable-0.10.1

Let's see the version:

import datatable as dt
print(f'datatable version={dt.__version__}')

Um oops !

Traceback (most recent call last):
  File "/git/corona/python/pointr/experiments/python/datatable.py", line 18, in <module>
    import datatable as dt
  File "/git/corona/python/pointr/experiments/python/datatable.py", line 19, in <module>
    print(f'datatable version={dt.__version__}')
AttributeError: module 'datatable' has no attribute '__version__'

But why?

enter image description here

Note: I have seen other strangeness with this package: e.g. not finding Frame - though not consistently.

Pasha
  • 6,298
  • 2
  • 22
  • 34
WestCoastProjects
  • 58,982
  • 91
  • 316
  • 560

1 Answers1

1

It appears that the problem has nothing to do with datatable. Look at the traceback:

Traceback (most recent call last):
  File "/git/corona/python/pointr/experiments/python/datatable.py", line 18, in <module>
    import datatable as dt
  File "/git/corona/python/pointr/experiments/python/datatable.py", line 19, in <module>
    print(f'datatable version={dt.__version__}')
AttributeError: module 'datatable' has no attribute '__version__'

Doesn't it strike you as suspicious that you have line 18 "calling" line 19? I mean, how could it be? Here's how:

When you name your script datatable.py and then do import datatable, then instead of importing the actual module from site-packages, it imports the "module" datatable.py instead. Basically, the file imports itself. And the way python manages imports, is that it creates a "stub" module in the sys.modules first (in order to prevent infinite recursions during imports). In your case, the module tries to import itself, so the stub module is fetched instead -- and then when you try to print its __version__ variable, turns out it doesn't exist.

You can verify this by printing dt.__file__ instead, which should show the location of the file that is being imported.

Needless to say, all this is not specific to datatable in any way; for example if you created a file numpy.py and then tried to import numpy, you'd run into same problems.

Pasha
  • 6,298
  • 2
  • 22
  • 34