Tensorflow 版本不匹配

Tensorflow version mismatch

我使用 Windows 10 和 Anaconda 来管理我的所有环境,我有几个不同的环境可以使用 Tensorflow。

我有一个运行 1.14 版本的环境。我有另一个具有工作 2.5 版本的环境。我刚刚创建了另一个安装 1.15 版本的环境。

# Name                    Version                   Build  Channel
tensorflow                1.15.0          gpu_py37hc3743a6_0
tensorflow-base           1.15.0          gpu_py37h1afeea4_0
tensorflow-estimator      2.6.0              pyh7b7c402_0
tensorflow-gpu            1.15.0               h0d30ee6_0

然而当我运行python时,它仍然加载tensorflow 2.5

(tf1p37) C:\Users\mazat>conda list tensorflow
# packages in environment at C:\Users\name\anaconda3\envs\tf1p37:
#
# Name                    Version                   Build  Channel
tensorflow                1.15.0          gpu_py37hc3743a6_0
tensorflow-base           1.15.0          gpu_py37h1afeea4_0
tensorflow-estimator      2.6.0              pyh7b7c402_0
tensorflow-gpu            1.15.0               h0d30ee6_0

(tf1p37) C:\Users\name>python
Python 3.7.11 (default, Jul 27 2021, 09:42:29) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf
2022-03-02 11:29:51.314557: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library cudart64_110.dll
>>> tf.__version__
'2.5.0'
>>>

所以看起来即使我在这个环境中安装了正确的版本,它仍然从不同的环境加载版本。可能是什么原因造成的? Keras 版本也发生了完全相同的事情。

更新1: 这是 sys.path

的输出
>>> import sys
>>> sys.path
['', 
'C:\Users\name\anaconda3\envs\tf1p37\python37.zip',
'C:\Users\name\anaconda3\envs\tf1p37\DLLs', 
'C:\Users\name\anaconda3\envs\tf1p37\lib', 
'C:\Users\name\anaconda3\envs\tf1p37', 
'C:\Users\name\AppData\Roaming\Python\Python37\site-packages', 
'C:\Users\name\anaconda3\envs\tf1p37\lib\site-packages', 
'C:\Users\name\anaconda3\envs\tf1p37\lib\site-packages\locket-0.2.1-py3.7.egg', 
'C:\Users\name\anaconda3\envs\tf1p37\lib\site-packages\win32',
 'C:\Users\name\anaconda3\envs\tf1p37\lib\site-packages\win32\lib', 
'C:\Users\name\anaconda3\envs\tf1p37\lib\site-packages\Pythonwin'
]
>>>

这将继续我们在评论中的讨论。

当您导入 sys 然后 print(sys.path) 时,您可以按顺序看到您的解释器将在其中查找包的所有路径。您在环境 tf1p37 中安装的软件包位于 'C:\Users\name\anaconda3\envs\tf1p37\lib\site-packages' 中。这也是安装tensorflow 1.15的地方。

然而,在'C:\Users\name\AppData\Roaming\Python\Python37\site-packages' 中也安装了tensorflow(即2.5版),它在列表的前面。发生的事情是您的 python 解释器搜索它找到的第一个 tensorflow,即这个 global-installed 版本。之后,它不再寻找其他安装。通过从 sys.path 中删除此项,第一次出现(也可能是唯一一次出现)是 tensorflow 1.15.