【问题标题】:VSCode terminal shows incorrect python version and path, launching terminal from anaconda works perfectlyVSCode 终端显示不正确的 python 版本和路径,从 anaconda 启动终端完美运行
【发布时间】:2019-07-02 02:27:29
【问题描述】:

我已经被这个问题困扰了好几个小时,并且相信我已经尝试了所有方法,除了把我的电脑扔出窗外。

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

(movierecommender) bash-3.2$ python -V
Python 3.7.2
(movierecommender) bash-3.2$ python -m django --version
2.1.5

但是,当我尝试从 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

我有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)"

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']

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']

如您所见,它似乎使用的是默认的 mac OS python 版本。

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

【问题讨论】:

  • 你安装了 VSCode 的 Python 扩展了吗?它使管理这样的事情变得更加容易。
  • 我刚才也遇到了这个问题,你终于解决了吗?
  • 还没想通,就放弃使用vscode终端了。希望有人能对此有所启发。

标签: python django visual-studio-code anaconda


【解决方案1】:

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

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

"terminal.integrated.env.osx": {
        "PATH": ""
}

那么$PATH就和外部终端一样了。

【讨论】:

  • 我查看了论坛帖子,这似乎是完全相同的问题。您能否进一步澄清该代码应该粘贴在哪里?你说“在我的莫哈韦沙漠”,但我不完全确定你的意思。如果可行,我会将其标记为已解决,谢谢
  • 您应该将其粘贴到您的用户的 settings.json 文件中。您可以在首选项 -> 设置 -> 用户首选项选项卡中找到它。只需键入设置,您将找到Edit in settings.json 的选项。或者文件位于~/Library/Application Support/Code/User/settings.json
  • 在 Windows 上它位于 C:\Users\username\AppData\Roaming\Code\User\settings.json
【解决方案2】:

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

但是 VS Code 现在提供了better way to handle it

简而言之,打开你的用户设置并添加这行代码:

    "terminal.integrated.inheritEnv": false,

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

【讨论】:

  • 在 windows 中遇到同样的问题,不幸的是这不适用于 windows :(
  • 在 MacOS 上为我工作,谢谢!请注意,当检测到公寓环境时,VS 代码会首先突出显示这一点。
  • @DragonZoned 我有一台 Mac,所以我不能说。但是,我有同事使用 Windows 机器,他们在 VS Code 上遇到的问题比我多得多。这看起来很奇怪(毕竟 VS Code 是一款 MS 产品)。但我的猜测是:这不是 VS Code 的问题,而是 Python 的问题。现在在 Windows 上运行 Python 比 5 到 10 年前要容易得多,但它仍然不像在 Linux/Mac 上那样优雅或容易。 :(
  • 在非 Anaconda 机器(例如 Homebrew)上,VS Code 终端使用与 MacOS 终端不同的 Python 版本的类似问题无法通过此解决。但是可以通过@Samuel的解决方案来解决。
【解决方案3】:

对于 Windows 用户:

首先,如果您还没有这样做,请使用 Ctrl+Shift+P --> Python: Select interpreter 将 VS 代码(编辑器,而不是其终端)设置为所需的 Python 环境。

然后,将 VS 代码的默认终端从 Powershell 更改为 CMD。这至少对我有用。

【讨论】:

    【解决方案4】:

    我刚刚遇到了同样的问题。尝试从 powershell 终端切换到 windows 终端。然后重新启动。它应该使用 anaconda 终端重新启动。如果这不起作用,您可以:

    首先将默认终端从 Visual Code 中更改为 CMD 终端,而不是 Powershell。将以下代码添加到批处理文件中。

    call "c:\path\to\anaconda3\Scripts\activate"
    

    然后我命名批处理文件并将其保存到我的根目录。在我的情况下snake.bat。现在,当我启动我的 CMD 终端时,我只需输入c:\snake.bat,CMD 提示符就会变为 Anaconda 提示符。

    【讨论】:

    • 我没听懂
    • 对我来说,只需将 VS 代码默认终端从 Powershell 切换到 CMD 即可。谢谢!
    【解决方案5】:

    我运行了这个脚本。现在 python3 正在从虚拟环境运行。 [Windows 10]

    pip3 install virtualenv
    virtualenv env
    call ".\env\Scripts\activate.bat"
    set requirements="./Requirements.txt"
    pip3 install -r %requirements%
    python
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-05
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 2023-02-07
      • 2022-01-24
      • 2021-07-06
      相关资源
      最近更新 更多