Python: Create Terminal error command noise included when default shell is fish
See original GitHub issueIssue 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® Core™ 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% |
Issue Analytics
- State:
- Created 4 years ago
- Reactions:18
- Comments:9 (1 by maintainers)
Top GitHub Comments
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.
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.