Skip to content

Python: Create Terminal error command noise included when default shell is fish #4959

Description

@breathe

Issue Type: Bug

Executing Python: Create terminal gives this output in the open terminal

Welcome to fish, the friendly interactive shell
ncohen@breathe-book ~/s/DefectCorrectionsNotebook> 
source /Users/ncohen/anaconda3/bin/activate
~/anaconda3/bin/activate (line 5): 'return' outside of function definition
\. "$_CONDA_ROOT/etc/profile.d/conda.sh" || return $?
                                            ^
from sourcing file ~/anaconda3/bin/activate
        called on standard input

source: Error while reading file '/Users/ncohen/anaconda3/bin/activate'
ncohen@breathe-book ~/s/DefectCorrectionsNotebook> conda activate DCN
ncohen@breathe-book ~/s/DefectCorrectionsNotebook>                                                                                                                                                                      (DCN) 

The line noise above comes from the fact that anaconda3/bin/activate is sh/bash syntax and not compatible with fish.

I think I see roughtly two possible approaches to fixing this:

Option 1

Assume that the user has already run the appropriate conda.fish script within their shell setup context in order to make conda available for use within their shell. For example in my ~/.config/fish/config.fish I have

source ~/anaconda3/etc/fish/conf.d/conda.fish

Which ensures (for conda 4.4 and greater) that 'conda` is in my PATH and that 'conda activate' will work correctly for use from the fish shell.

If this tact is used, then I would expect Python: Create Terminal to look like this

Welcome to fish, the friendly interactive shell
ncohen@breathe-book ~/s/DefectCorrectionsNotebook> conda activate DCN
ncohen@breathe-book ~/s/DefectCorrectionsNotebook>                                                                                                                                                                      (DCN) 

Option 2

If its not desirable to assume the user has setup their shell appropriately for conda -- then I think it would be needed to invoke the correct conda.{sh,fish,...} setup script for each shell. The activate script would work with bash shell I think but if the user's shell is fish the output should look like this

ncohen@breathe-book ~/s/DefectCorrectionsNotebook> source ~/anaconda3/etc/fish/conf.d/conda.fish
ncohen@breathe-book ~/s/DefectCorrectionsNotebook> conda activate DCN

I believe that last sequence will only work with anaconda 4.4 and greater -the pre-4.4 version of conda.fish assumed that the conda command had already been added to the user PATH -- whereas post 4.4 configures PATH to include the appropriate conda binary such that conda binary's conda activate command will work correctly with the fish shell. Conda notes on the 4.4 changes

Extension version: 2019.3.6139
VS Code version: Code 1.32.3 (a3db5be9b5c6ba46bb7555ec5d60178ecc2eaae4, 2019-03-14T22:46:48.547Z)
OS version: Darwin x64 18.2.0

System Info
Item Value
CPUs Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz (8 x 2800)
GPU Status 2d_canvas: enabled
checker_imaging: disabled_off
flash_3d: enabled
flash_stage3d: enabled
flash_stage3d_baseline: enabled
gpu_compositing: enabled
multiple_raster_threads: enabled_on
native_gpu_memory_buffers: enabled
rasterization: enabled
surface_synchronization: enabled_on
video_decode: enabled
webgl: enabled
webgl2: enabled
Load (avg) 2, 2, 2
Memory (System) 16.00GB (3.02GB free)
Process Argv .
Screen Reader no
VM 0%

Activity

  1. ghost added
    triage-neededNeeds assignment to the proper sub-team
    on Mar 27, 2019
  2. ghost removed
    triage-neededNeeds assignment to the proper sub-team
    on Mar 27, 2019
  3. ghost removed
    triage-neededNeeds assignment to the proper sub-team
    on Mar 27, 2019
  4. var-arora commented on Apr 6, 2019

    @var-arora

    Yes, this is quite annoying and happens every time I create a new terminal instance when working in a Python project. IMO there is no reason to be sourcing conda's bin/activate. The sane default is definitely for the user to setup their environment to already include conda's activate, and the python extension's only responsibility should be to activate the correct conda environment.

  5. caizixian commented on Apr 11, 2019

    @caizixian

    I'm having the same issue and the path of conda can potentially be obtained from python.condaPath

  6. ion2014 commented on Aug 14, 2019

    @ion2014

    As for today the bug persists, if you just want to get rid of the anooying error just uncheck the python > terminal: Activate Environment settings and activate the environment manually.

  7. wayearn commented on Jan 6, 2020

    @wayearn

    same bug

  8. RohanGautam commented on Apr 25, 2020

    @RohanGautam

    Yes!!!!! This is so annoying

  9. lsorber commented on Aug 13, 2020

    @lsorber

    See also this SO question, which was answered by Brett Cannon (@brettcannon). Unfortunately, even after conda init fish this still seems to be a problem.

    Are there any workarounds (besides disabling automatic activation)?

  10. imyhxy commented on Oct 11, 2021

    @imyhxy

    any update? can we just execute conda activate envname with the source xxx things?

  11. brettcannon commented on Oct 15, 2021

    @brettcannon
    Member

    No specific update right now, but we do have plans to rework how we activate terminals via #11039 which will implicitly solve this.

    And yes, you can do the activation manually. You can also launch VS Code from an activated environment and then turn off automatic activation as another work-around.

  12. removed this from the FY20Q2 milestone on Jun 7, 2022
  13. karrtikr commented on Jun 7, 2022

    @karrtikr

    Unfortunately, even after conda init fish this still seems to be a problem.

    With #18989 we now ensure source activate command is only sent if the shell is not initialized already (conda is not sourced), so this should no longer be an issue, closing this.

  14. locked as resolved and limited conversation to collaborators on Jul 8, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area-terminalbugIssue identified by VS Code Team member as probable bug

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions