我正在使用
在许多TensorFlow GitHub示例中,可以在PyCharm中找到以下语句:
这很好用,我目前使用的是TensorFlow 1.4.0,如果我按照上述脚本运行,错误消息不会显示,如果我将
我遇到的问题是PyCharm在if语句上显示以下警告:
即使可以修改导入语句以避免此警告,我仍然不想这样做,因为这会对非PyCharm用户造成困惑,并使我的示例与所有其他可用的TensorFlow文档和示例不同。目前看来,这是我所能做的最好的:
if tf.__version__ < x.x.x:
在许多TensorFlow GitHub示例中,可以在PyCharm中找到以下语句:
# 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灯泡图标,我会得到以下选项:这些选项都不是特别吸引人。
目前,我选择最后一个选项“抑制for语句”,它会在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
这里有什么我漏掉的吗?有没有更好的方法来完成这个任务?