我是因为要下载tensorflow(需要Python>3.7),而去将python3.6升级到python3.8,下载好后需要将Python解释器(Python interpreter)设置为Python3.8,此时发现报错“environment location directory is not empty”。
原因在于项目下的venv文件。
1、首先了解一下venv文件是干嘛的?
venv(VirtualEnv)可以搭建虚拟且独立的python运行环境, 使得单个项目的运行环境与其它项目独立起来。也就是说项目的venv自带其需要使用的环境,但是我已经把它的环境给删除了(也就是刚才的python3.6),现在无法使用了,要先删除这个venv文件才能创建新的环境。
直接删除venv的时候提示报错:
根据提示可知权限不够,以管理员身份运行pycharm,再删除即可。
下面是以管理员身份运行Ubuntu的方法:
(1)进入应用目录
cd /usr/share/applications
(2)编辑相应文件修改权限
sudo gedit pycharm-sudo.desktop
(3)在打开的文件中填入以下内容
[Desktop Entry]
Type=Application
Name=PyCharm [sudo]
Icon=/home/lby/Downloads/pycharm-community-2022.3.2/bin/pycharm.png
Exec=gnome-terminal -x sudo /home/lby/Downloads/pycharm-community-2022.3.2/bin/pycharm.sh
Comment=Python IDE
Categories=Development;IDE;
StartupWMClass=jetbrains-pycharm
注意Icon和Exec中的路径改为自己的文件所在路径,pycharm对应版本也要修改为你自己下载的版本。
2、配置的新环境路径是安装的python环境,我用软链接将/usr/bin/python指向了我需要的python3.8,所以选择如下图:
左侧有4种选择:Virtualenv Environment、Conda Environment、System Interpreter、Pipenv Environment
①System Interpreter:如字面意思,系统里安装的本地Python作为解释器,一般很少用,不推荐;
②Pipenv Environment:整合了 pip 和 virtualenv 等库,bug较多,用的很少;
③Virtualenv Environment:使项目拥有独立的Python环境,各项目之间不会因为版本依赖、库依赖受到影响。
④Conda Enviroment:项目文件夹会在Anaconda下面,独立于系统解释器的版本环境,会继承Anaconda下所有的包。
仅是自己学习的话,选择Virtualenv Environment或者Conda Enviroment都可。我常用Virtualenv Environment。
然后python解释器就是我要换的python3.8了。
独立的虚拟环境会导致不同项目下的依赖包不同,也就是说同一个包可能要分别在不同的项目里各下载一次,其实是有点麻烦的,所以如果不是做一些大项目(比如深度学习之类隔绝起来好一点),刚入门的小伙伴可能写的项目还比较轻量,用conda环境会更方便。
参考文章:Environment location is not empty