【问题标题】:Python works in vs code but not in vs code terminalPython 在 vs code 中工作,但在 vs code 终端中不工作
【发布时间】:2022-01-10 17:03:30
【问题描述】:

我可以使用运行 python 文件按钮来运行我的 python 文件。 当我在 vs 代码中打开终端时,我看到了这个:

source /Users/xxxxx/opt/anaconda3/bin/activate
conda activate base

但如果我在终端中输入where python 则得到:

/usr/bin/python

此外,如果我运行 python 文件,我会收到 No module named 'whatever' 等错误,或者存在语法错误,尽管文件在 vs 代码中运行。

我还能从终端运行文件吗?

【问题讨论】:

  • 这能回答你的问题吗? Mac using default Python despite Anaconda install
  • 也许您可以尝试更改 VSCode 使用的 python 解释器的位置
  • 我有同样的问题,它在外部终端,vscode 上工作,但在 vscode 中的终端上不起作用。

标签: python visual-studio-code


【解决方案1】:

所以当你使用 VSCode 时,conda 实际上是在采购和使用它自己的包。
如果你想使用相同的包,你必须这样做,所以我会说只是这样做:

source /Users/xxxxx/opt/anaconda3/bin/activate
conda activate base

对于第二个问题,您可能希望在运行 python 时将它的 PYTHONPATH 提供给它。它基本上告诉它在哪里可以找到其他模块(如 src 目录)。
为此,只需添加前缀:PYTHONPATH=/folder/path/ python filename.py

【讨论】:

  • 我尝试使用 PYTHONPATH 到 conda,但仅以不同的顺序得到相同的错误
  • 使用/Users/xxx/opt/anaconda3/bin/activate && conda activate /Users/xxx/opt/anaconda3; 它可以在我的终端外的vs代码中工作,但不能在vs代码终端中
  • 你得到什么错误?
  • No module named 'selenium' and with open(f'{title}.html', 'w') as f:` 语法错误。但是没有语法错误!
【解决方案2】:

你已经在 VSCode 和终端中选择了不同的环境。

你在VSCode中选择了conda base环境,你的python文件运行正常。但是当你离开 VSCode 时,你使用的是全局 python 环境(/usr/bin/python)。

而且这个 python 版本低于3.6f-string 是在3.6 中引入的,所以你会得到syntax error

因此,您可以在执行 python 文件之前在终端中激活conda base 环境:

source /Users/xxxxx/opt/anaconda3/bin/activate
conda activate base

【讨论】:

  • 如上所述,我打开我的终端(不是在 vs 代码中)并激活 conda env - 它可以工作。我在 vs 代码内部的终端中执行相同的过程 - 它不起作用
  • @stanvooz 在 VSCode 中,Python 扩展将自动激活 conda 环境,如您在问题中提到的。您无需手动激活它。而且不是/Users/xxx/opt/anaconda3/bin/activate && conda activate /Users/xxx/opt/anaconda3; ,而是source /Users/xxxxx/opt/anaconda3/bin/activateconda activate base
  • 也试过了。没有任何变化
  • @stanvooz 能否提供截图?
【解决方案3】:

我在 MacOS 上遇到了类似的问题。

在标准终端中:

$ python -V
Python 3.9.7

$ python3 -V
Python 3.9.7

$ /opt/anaconda3/bin/python -V
Python 3.9.7

一切都好。

但是,在 VSCode 终端中(在base conda env 中):

$ python -V
Python 2.7.10

$ python3 -V
Python 3.6.4

$ /opt/anaconda3/bin/python -V
Python 3.9.7    # this is the one I want by default

在 VSCode 中,我在设置 (screenshot) 中设置了 Anaconda 和 Python 解释器的路径:

  • Python: Conda Path: /Users/用户名/opt/anaconda3/bin/conda
  • Python: Default Interpreter Path: /Users/用户名/opt/anaconda3/bin/python

我的.bash_profile(请注意我评论了旧python版本的路径):

# Setting PATH for Python 3.5
# The original version is saved in .bash_profile.pysave
#PATH="/Library/Frameworks/Python.framework/Versions/3.5/bin:${PATH}"
#export PATH

# MacPorts Installer addition on 2017-05-11_at_15:09:46: adding an appropriate PATH variable for use with MacPorts.
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
# Finished adapting your PATH environment variable for use with MacPorts.


# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
#PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
#export PATH


# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/Users/username/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/Users/username/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/Users/username/opt/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/Users/username/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

另外,当我尝试 conda list(在 VSCode 中,conda base env)我得到

python                    3.9.7                h88f2d9e_1

这是正确的,但是在运行时

python3 -c "import sys; print(sys.version)"

我明白了

3.6.4 (v3.6.4:d48ecebad5, Dec 18 2017, 21:07:28) 

这不是我想要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 2022-01-19
    • 2020-09-29
    • 2022-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多