来自 github 的数据表安装未能找到版本

Datatable installation from github failing to find the version

我已经从存储库

卸载并重新安装了最新版本的datatable
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 - 虽然不一致。

看来问题与datatable无关。看回溯:

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 行 "calling" 第 19 行,你不觉得很可疑吗?我的意思是,怎么可能呢?方法如下:

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

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

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