1

datatable我已经从 repo卸载并重新安装了最新版本

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

让我们看看版本:

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

哎呀

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__'

但为什么?

在此处输入图像描述

注意:我已经看到这个包的其他奇怪之处:例如没有找到Frame- 虽然不是一致的。

4

1 回答 1

1

看来问题与数据表无关。看回溯:

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__'

你有没有怀疑你有第 18 行“调用”第 19 行?我的意思是,怎么可能?就是这样:

当您命名脚本datatable.py然后执行import datatable时,它不是从站点包导入实际模块,而是导入“模块”datatable.py。基本上,文件会自行导入。而python管理导入的方式是它首先创建一个“存根”模块sys.modules(为了防止导入期间的无限递归)。在您的情况下,模块尝试导入自身,因此取而代之的是存根模块 - 然后当您尝试打印其__version__变量时,结果发现它不存在。

您可以通过打印dt.__file__来验证这一点,这应该会显示正在导入的文件的位置。

不用说,所有这些都不是特定于数据表的;例如,如果您创建了一个文件numpy.py然后尝试这样做import numpy,您会遇到同样的问题。

于 2020-03-09T05:15:07.043 回答