解决Pycharm迁移的项目出现虚拟环境的sdk不可用问题


1.1解决方法

​ 1)在迁移项目时,不要迁移venv(包含工程库文件)和.idea文件,只要把所利用到的库全部生成到requirement文件中即可,然后在新机器上根据requirement文件安装所需库(venv中所包含的工程库)。

# 在原设备中生成requirement.txt的安装文件(在工程目录下)
pip freeze > requirements.txt

​ 2)在新设备中新建一个工程(目的是为了创建一个虚拟环境),然后将旧设备中的项目拷贝至该项目,然后输入以下代码将工程所需要的库重新安装(至新的虚拟环境中,venv

# 将项目迁移至新设备中后,在虚拟环境中安装所需要的文件(工程目录下)
(venv)pip install -r requirements.txt

​ 3)若是在一个新的电脑里已有工程所需库,则只需要将原来工程文件中除venv.idea文件以外的文件拷贝过来即可,这样做的目的是为了使用新电脑里的库与环境,目的与上述方法类似。

1.2总结

此次总结包含新建一个工程时的建议,非常有用,建议仔细阅读!

​ 在项目迁移时,不要将原虚拟环境(venv.idea文件)也拷贝过来,只要把原来工程所需库生成到requirement文件(包含工程所需库),然后在新机器上根据requirement文件安装即可。

Anaconda本质上就是一个包管理工具,在一台电脑上安装Anaconda,然后再装上工程文件所需要的库,并将Anaconda内的python.exe作为解析器,这样在工程迁移至另外一个文件夹或者另外一台电脑时,只要电脑内有Anaconda及相应的库,那么该工程就可以直接使用(如果没有就直接安装)。

​ 新建虚拟环境(Virtual Environment, venv)时,基础解析器会在工程文件内生成两个文件夹(venv.idea文件夹),其中python.exe会保存在venv\Scripts,而所安装的库会保存在venv\Lib中,每一个工程文件中的库和解析器都是相互独立的。所以如果使用公共解析器和公共库(Anaconda)的话,那么在工程迁移的时候就会比较方便,不会出现上述问题了。

​ 若不想安装Anaconda,也可以在新建工程文件时,不选择虚拟环境,而是选择第二项(和Anaconda一样),只不过解析器选择自己安装的python(非Anaconda),那么所安装的库也会保存在python.exe所属目录的文件夹下(路径为:该文件夹下的Lib\site-packages),不过Pycharm好像并不建议这么做。经过笔者尝试,发现使用纯Python作为公共解析器和公共库的时候,其原理与使用Anaconda类似,以后所有的工程所需库只要是使用的公共解析器,就自然可以调用公共库,而不需要再次下载,如果遇到一些未使用过的库,此次下载之后会直接下载到上述公共库的文件夹下,非常方便使用。因此,笔者建议尽量使用公共解析器,而非单独新建一个虚拟的环境。

​ 总而言之,新建工程文件时选择第二项,无论是Anaconda下的python.exe还是直接的python.exe,都可以被视为一个公共的库公共的解析器,其可以被任何工程文件所使用。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐