我已从存储库中卸载并重新安装了最新版本的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__}')
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__'
但是为什么?
注意:我已经看到此软件包的其他奇怪之处:例如找不到Frame
-尽管不一致。
看来问题与数据表无关。看一下回溯:
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
,则会遇到相同的问题。