关于配置vscode使用Python虚拟环境的文章网上虽然有不少而且提供了各种各样的方式来实现但是写得都不是很详细,很多都是直接给出了结果而缺少了为什么要这样配置,让人有一种一头雾水的感觉。今天休息,趁这个机会强迫自己写一些东西,也整理一下混乱的脑子~~
有时候电脑上会装不同版本的Python解释器以满足不同需求的开发。因为一些项目里面可能会引入比较多的库或者会有一些版本上的区别,这就会导致在其他机器上部署时会很麻烦。。。最好是那种在A机器上开发完成后打包到B机器直接就能跑,不需要再去处理各种库和模块
我的电脑上装了不同的python版本,如果我想用3.5的版本来建立一个工程并且后期需要放到别的机器上部署的话,我可以构建一个3.5版本的虚拟环境:
python35 -m venv 你的虚拟文件夹名称
为了区分不同的版本,我的python解释器已经重命名了,如果你只有一个版本的python, 你应该运行以下命令来建立虚拟环境:
python -m venv 你的虚拟文件夹名称
关于开发Python的工具有很多,比如著名的PyCharm,但我个人比较喜欢vscode。因为它轻便、简单
总所周知vscode是可以为你的项目指定python解释器的。如果你的电脑上安装了多个python版本的话,Ctrl+Shift+P 输入并点击 python: select interpreter ,之后就可以为你的项目指定一个python解释器了
为了让vscode直接使用我们创建好的python虚拟环境,同时不需要我们再去编写或者修改json文件。假设我们已经在temp目录下建立了一个python的虚拟环境。现在在temp根目录下再新建一个名为env的文件夹,然后将python -m venv生成的所有内容都拷贝到env目录中,你自己的代码放在env目录外的另一个目录中。至少我的习惯是这样~~
比如我某个工程中的目录是这样的:
env目录中:
code目录里就是我的工程代码,这里就不贴图了。。。
接下来,在你的vscode中打开temp这个文件夹,随便点击一个.py文件,vscode会自动尝试去配置当前项目要使用的python解释器:
一会之后就能看到解释器已经变成我们创建的虚拟环境中的解释器了
如果你的vscode是第一次载入虚拟环境的话,它会在ps命令行中尝试激活当前的虚拟环境,这通常都会报一个ps脚本执行错误的错误。这是PowerShell执行策略的问题,解决的方案是:
- 关闭vscode,以管理员身份运行vscode;
- 在PS终端里执行:get-ExecutionPolicy,显示Restricted,表示状态是禁止的;
- 在PS终端里执行:set-ExecutionPolicy RemoteSigned;
- 这时再执行get-ExecutionPolicy,就显示RemoteSigned;
- 重启vscode
以上步骤我也是参考了这篇博文解决的,感谢 啊齐啦 的分享~~:https://blog.csdn.net/larpland/article/details/101349586
来一段神级代码测试一下:
绿色部分出现乱码是因为我的项目文件夹使用了中文名称,而PS并不支持。。。
之所以将虚拟环境文件放到项目中自己新建的env目录可以免除手动编辑json文件的原因详见 官方文档 的Where the extension looks for environments内容 :
在vscode中也有相应的信息,你也可以根据自己的时间需要自行添加:
当然啦,除了上述通过将虚拟环境文件存放于env目录的方法外,你也可以在setting.json文件中手动指定你的虚拟环境解释器位置。官方文档 中的Manually specify an interpreter章节也有详细的叙述(浏览器翻译的,建议看原文档):
简而言之就是将 python.pythonPath 的值改成你的虚拟环境中的python解释器的路径即可
举个栗子:在我的工程中虚拟环境存放在工程目录下的aaa这个目录中,而我要在vscode中使用这个虚拟环境,那么
{
"python.pythonPath": "aaa\\Scripts\\python.exe"
}
参考:
啊齐啦 《解决VSCODE"因为在此系统上禁止运行脚本"报错》: https://blog.csdn.net/larpland/article/details/101349586