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

时间:2019-02-07 21:12:06

标签: python django visual-studio-code anaconda

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

我在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

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

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

5 个答案:

答案 0 :(得分:10)

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

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

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

    "terminal.integrated.inheritEnv": false,

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

答案 1 :(得分:9)

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

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

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

然后$PATH将与外部终端相同。

答案 2 :(得分:1)

对于Windows用户:

首先,如果尚未完成操作,请使用Ctrl+Shift+P --> Python: Select interpreter将VS代码(编辑器,而不是其终端)设置为所需的Python环境。

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

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

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

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