VSCode终端显示不正确的python版本和路径,从anaconda启动终端效果很好

agu*_*max 6 python django anaconda visual-studio-code

我已经在这个问题上停留了几个小时,并且相信我已经尝试了将计算机扔出窗户之外的所有事情。

我在Anaconda上使用python版本3.7和Django版本2.1设置了虚拟环境。如果我从Anaconda激活了这个虚拟环境,一切都会顺利进行。

(movierecommender) bash-3.2$ python -V
Python 3.7.2
(movierecommender) bash-3.2$ python -m django --version
2.1.5
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从vscode终端激活环境时,我得到了

(movierecommender) maxs-MBP:movies maxswann$ python -V
Python 2.7.10
(movierecommender) maxs-MBP:movies maxswann$ python -m django --version
/usr/bin/python: No module named django
Run Code Online (Sandbox Code Playgroud)

Python 3.7.2 64-bit ('movierecommender':conda) 在我的vscode窗口的左下方显示了我的python解释器,但仍然得到了错误的python版本

我以为这可能与PYTHONPATH有关,但我尝试取消设置和重置,即使我不必担心在Anaconda中也会这样做,因为它会自动添加: "python.pythonPath":"/Users/maxswann/anaconda3/envs/movierecommender/bin/python" 到settings.json.vscode文件中

使用:

python -c "import sys; print(sys.path)"
Run Code Online (Sandbox Code Playgroud)

Anaconda发布的终端

['', '/Users/maxswann/anaconda3/envs/movierecommender/lib/python37.zip', '/Users/maxswann/anaconda3/envs/movierecommender/lib/python3.7', '/Users/maxswann/anaconda3/envs/movierecommender/lib/python3.7/lib-dynload', '/Users/maxswann/anaconda3/envs/movierecommender/lib/python3.7/site-packages']
Run Code Online (Sandbox Code Playgroud)

Vs代码终端

['', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/Library/Python/2.7/site-packages', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python', '/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/PyObjC']
Run Code Online (Sandbox Code Playgroud)

如您所见,它似乎正在使用默认的Mac OS python版本。

以前有人遇到过这个问题吗?我整天都在扯头发,试图解决这个问题

Mik*_*son 15

@Samuel 官方接受的答案是当时的正确答案。

但是 VS Code 现在提供了一种更好的方法来处理它

简而言之,打开您的用户设置并添加以下代码行:

    "terminal.integrated.inheritEnv": false,
Run Code Online (Sandbox Code Playgroud)

这可以防止踩踏您正在使用的任何 Python 环境管理器(例如,venv、conda 等)。

  • 在 Windows 中面临同样的问题,不幸的是这不适用于 Windows :( (4认同)
  • @DragonZoned 我有一台 Mac,所以我不能说。然而,我的一些同事使用 Windows 机器,他们在 VS Code 上遇到的问题比我多“很多”。这看起来很奇怪(毕竟 VS Code 是 MS 产品)。但我的猜测是:这不是 VS Code 的问题,而是 Python 的问题。如今,在 Windows 上运行 Python 比 5 - 10 年前要容易得多,但它仍然不像在 Linux/Mac 上那样优雅或简单。:( (2认同)

Sam*_*ula 11

我一直面临着完全相同的问题。终于在论坛上找到了解决方法(https://github.com/Microsoft/vscode-python/issues/4434#issuecomment-466600591

只要将一些东西添加到配置中terminal.integrated.env.osx,该内容就会PATH在shell初始化后添加到源文件(源bash_profile或zshrc)之后。在我的Mojave中,我只需在用户配置中添加以下空条目:

"terminal.integrated.env.osx": {
        "PATH": ""
}
Run Code Online (Sandbox Code Playgroud)

然后,$PATH它将与外部端子相同。

  • 我查看了论坛帖子,这似乎是完全相同的问题。您能否进一步说明该代码应该粘贴在哪里?你说“在我的莫哈韦沙漠”,但我不完全确定你的意思。如果这有效,我会将其标记为已解决,谢谢 (2认同)
  • 您应该将其粘贴到您的用户的 settings.json 文件中。您可以在首选项 -> 设置 -> 用户首选项选项卡中找到它。只需输入设置,您会发现一个选项“在 settings.json 中编辑”。或者文件位于`~/Library/Application Support/Code/User/settings.json`。 (2认同)