以下内容转载自: https://www.cnblogs.com/yibeimingyue/p/14660246.html
先来说明我的问题:首先我在anoconda下建立了自己的虚拟环境,并在我的虚拟环境中用pip安装了对应版本的tensorflow,但是再调用的时候,我发现并没有调用我安装的tensorflow版本。导致我的代码无法运行。因此我产生了一个疑惑,pip安装的包和conda安装的包的位置是否不同,我在运行的时候到底用的是那个环境下的包。
注:miniconda3 和 我文中提到的anoconda3差不多,因为大部分是anoconda3,因此虽然机器上装的是miniconda3,但文章中在写的时候用的是anoconda3,只是命名的问题。
经查阅资料发现:
1.使用conda install在虚拟环境中安装的包都存放在了/anoconda3/pkgs 这个路径下,然后,我们在我们的虚拟环境中要用到或下载时先到该路径下去找,若有则直接将其复制到我们的虚拟环境中包得存放位置:~/anoconda3/envs/xxx/lib/python3.6/site-packages/。若没有,则先下载到/anoconda3/pkgs,在复制到虚拟环境包的路径下。
2.而在虚拟环境中使用pip install 安装时,则直接将包安装在了~/anoconda3/envs/xxx/lib/python3.6/site-packages/路径下。
问题分析
到这里,我们就知道了二者安装包后包所在的位置,那么为什么还会出现我上面的问题呢,原因就是,你虽然在你的虚拟环境下运行代码,但是你的实际运行环境并不一定就是你的包的安装路径,也就是说,你虽然在你创建的虚拟环境中将一切包都安装好了,但是在运行代码,python在编译时,程序并没有去:~/anoconda3/envs/xxx/lib/python3.6/site-packages/这个路径下调用。而是去了优先级更高的别的路径下调用,自然就会出现上述问题。那么如何查看,我当前虚拟环境的实际运行路径呢?
我们使用 python -m site 来查看,结果类似下面:
问题解决
查看USER_SITE 和 USER_BASE 是否对应了你的包安装的路径。如果不是,你就要将其按照上面的格式修改:
修改方式:打开 ~/anaconda3/envs/XXX/lib/python3.6/site.py
找到USER_SITE 和 USER_BASE 并人为赋值即可。这样我的问题到此就解决了。
问题思考
那么为什么会产生我这个问题呢,我仔细分析了一下,后来发现:
先来说明我的问题:首先我在anoconda下建立了自己的虚拟环境,并在我的虚拟环境中用pip安装了对应版本的tensorflow,但是再调用的时候,我发现并没有调用我安装的tensorflow版本。导致我的代码无法运行。因此我产生了一个疑惑,pip安装的包和conda安装的包的位置是否不同,我在运行的时候到底用的是那个环境下的包。
注:miniconda3 和 我文中提到的anoconda3差不多,因为大部分是anoconda3,因此虽然机器上装的是miniconda3,但文章中在写的时候用的是anoconda3,只是命名的问题。
经查阅资料发现:
1.使用conda install在虚拟环境中安装的包都存放在了/anoconda3/pkgs 这个路径下,然后,我们在我们的虚拟环境中要用到或下载时先到该路径下去找,若有则直接将其复制到我们的虚拟环境中包得存放位置:~/anoconda3/envs/xxx/lib/python3.6/site-packages/。若没有,则先下载到/anoconda3/pkgs,在复制到虚拟环境包的路径下。
2.而在虚拟环境中使用pip install 安装时,则直接将包安装在了~/anoconda3/envs/xxx/lib/python3.6/site-packages/路径下。
问题分析
到这里,我们就知道了二者安装包后包所在的位置,那么为什么还会出现我上面的问题呢,原因就是,你虽然在你的虚拟环境下运行代码,但是你的实际运行环境并不一定就是你的包的安装路径,也就是说,你虽然在你创建的虚拟环境中将一切包都安装好了,但是在运行代码,python在编译时,程序并没有去:~/anoconda3/envs/xxx/lib/python3.6/site-packages/这个路径下调用。而是去了优先级更高的别的路径下调用,自然就会出现上述问题。那么如何查看,我当前虚拟环境的实际运行路径呢?
我们使用 python -m site 来查看,结果类似下面:
问题解决
查看USER_SITE 和 USER_BASE 是否对应了你的包安装的路径。如果不是,你就要将其按照上面的格式修改:
修改方式:打开 ~/anaconda3/envs/XXX/lib/python3.6/site.py
找到USER_SITE 和 USER_BASE 并人为赋值即可。这样我的问题到此就解决了。
问题思考
那么为什么会产生我这个问题呢,我仔细分析了一下,后来发现: