【发布时间】:2018-06-30 06:54:57
【问题描述】:
我正在使用
if tf.__version__ < x.x.x:
PyCharm 中的语句,在许多 TensorFlow GitHub 示例中都可以找到,如下所示:
# tensorflow_version_test.py
import tensorflow as tf
#######################################################################################################################
def main():
if tf.__version__ < "1.4.0":
print("ERROR: TensorFlow version is older than 1.4.0, upgrade to 1.4.0 or higher before continuing !!!")
return
# end if
print("TensorFlow version is >= 1.4.0, continuing . . .")
# rest of program would go here . . .
# end main
#######################################################################################################################
if __name__ == "__main__":
main()
这很好用,我目前使用的是 TensorFlow 1.4.0,如果我按上述方式运行此脚本,则不会显示错误消息,并且如果我将 if 语句更改为例如 2.4.0 (当然还没有出现)然后错误按预期显示并且程序退出。
我遇到的问题是 PyCharm 在 if 语句中显示以下警告:
Cannot find reference '__version__' in '__init__.py'
这是截图:
如果我选择 PyCharm 灯泡图标,我会得到以下选项:
没有一个特别吸引人。
目前,我选择了最后一个选项“Suppress for statement”,它将这一行添加到 if 语句上方
# noinspection PyUnresolvedReferences
我担心的是我正在编写许多其他人将使用的文档,其中一些人将使用 PyCharm,而其中一些人将不可避免地使用不同的编辑器。
出于这个原因,我无法更改任何 TensorFlow init.py 文件,因为那样会在我的计算机上创建自定义安装,并且任何遵循我的文档的人都会在他们的文件中看到不同的结果如果他们正在使用 PyCharm,则显示屏幕。此外,我正在使用 pip 安装软件包,所以我什至不确定这是否可能,但即使是这样,它仍然不是一个可接受的选择。
同样,我不希望包含特定于 PyCharm 的注释行,因为这会给不使用 PyCharm 的人造成混淆。
我真的不希望完全禁用此检查,因为我发现 PyCharm 的警告在许多情况下都非常有用,因此我宁愿不禁用它们。
在谷歌上搜索这个问题后,我发现了这个post。
建议的答案是编辑一个 init.py 文件,出于上述原因我不想这样做,或者将导入语句更改为
from somePackage import module1, module2, module3
这似乎不适用于我的情况,因为我完全使用语句导入 TensorFlow
import tensorflow as tf
即使以某种方式修改导入语句以防止出现此警告,我仍然宁愿不这样做,因为这会给非 PyCharm 用户造成混淆,并使我的示例不同于所有其他 TensorFlow 文档和可用示例。
目前看来这是我能做的最好的:
# this next comment line is necessary to avoid a false warning if using the editor PyCharm
# noinspection PyUnresolvedReferences
if tf.__version__ < "1.4.0":
print("ERROR: TensorFlow version is older than 1.4.0, upgrade to 1.4.0 or higher before continuing !!!")
return
# end if
这里有什么我遗漏的吗?有什么更好的方法来做到这一点的建议吗?
【问题讨论】:
标签: python tensorflow pycharm