问题描述及解决:
非常简单的import tensorflow模块,但是无法使用模块中的add函数。
分析
说明import找到了tensorflow这个模块,否则会出现ModuleNotFoundError: No module named ‘tensorflow’。问题在于找到的包没有add这个函数。
我使用的编译环境是anaconda中新建的tensorflow虚拟环境,里面安装了tensorflow的包
并且在anaconda的jupyter中用同一个虚拟环境是可以运行的,因此tensorflow模块的安装及虚拟环境的设置是没问题的。
最终解决:
问题在于import导入模块时的路径优先级问题,由于我的python文件命名为tensorflow.py,因此import会首先找到自身的这个tensorflow文件作为模块导入。
我只需要把python文件重命名其他,尽量不使用一些包的名字即可,如下所示:
运行成功!
总结及验证
总结:
-
import可导入的包括模块与包:
模块(module)
用来从逻辑(实现一个功能)上组织Python代码(变量、函数、类),本质就是*.py文件。文 件是物理上组织方式"module_name.py",模块是逻辑上组织方式"module_name"。
包(module)
定义了一个由模块和子包组成的Python应用程序执行环境,本质就是一个有层次的文件目录结构(python2要求必须带有一个__init__.py文件)。
————————————————
本段引用自CSDN博主「GentleCP」的文章
原文链接:https://blog.csdn.net/GentleCP/article/details/87395869 -
查看当前环境下import导入模块时搜索的路径顺序:
import sys print(sys.path)
结果如下:
即import会优先查找本工程所在路径,然后才到anaconda虚拟环境tensorflow中去查找相关的包。 -
验证:
由于之前的python文件中没有定义add函数,所以出现module tensorflow has no attribut add。现在定义了就直接调用了所定义的add函数