Conda activate failure
Asked Answered
V

2

5

Sometimes when I use conda activate (my venv) inside the vs Code terminal it fails, with the following error:

# >>>>>>>>>>>>>>>>>>>>>> ERROR REPORT <<<<<<<<<<<<<<<<<<<<<<

    Traceback (most recent call last):
      File "/Users/umbertofontanazza/opt/anaconda3/lib/python3.9/site-packages/conda/exception_handler.py", line 17, in __call__
        return func(*args, **kwargs)
      File "/Users/umbertofontanazza/opt/anaconda3/lib/python3.9/site-packages/conda/cli/main.py", line 105, in main_sourced
        print(activator.execute(), end="")
      File "/Users/umbertofontanazza/opt/anaconda3/lib/python3.9/site-packages/conda/activate.py", line 199, in execute
        return getattr(self, self.command)()
      File "/Users/umbertofontanazza/opt/anaconda3/lib/python3.9/site-packages/conda/activate.py", line 165, in activate
        builder_result = self.build_activate(self.env_name_or_prefix)
      File "/Users/umbertofontanazza/opt/anaconda3/lib/python3.9/site-packages/conda/activate.py", line 343, in build_activate
        return self._build_activate_stack(env_name_or_prefix, False)
      File "/Users/umbertofontanazza/opt/anaconda3/lib/python3.9/site-packages/conda/activate.py", line 433, in _build_activate_stack
        deactivate_scripts = self._get_deactivate_scripts(old_conda_prefix)
      File "/Users/umbertofontanazza/opt/anaconda3/lib/python3.9/site-packages/conda/activate.py", line 765, in _get_deactivate_scripts
        for entry in os.scandir(join(prefix, "etc", "conda", "deactivate.d"))
      File "/Users/umbertofontanazza/opt/anaconda3/lib/python3.9/posixpath.py", line 76, in join
        a = os.fspath(a)
    TypeError: expected str, bytes or os.PathLike object, not NoneType

`$ /Users/umbertofontanazza/opt/anaconda3/bin/conda shell.posix activate base`

  environment variables:
                 CIO_TEST=<not set>
                CONDA_EXE=/Users/umbertofontanazza/opt/anaconda3/bin/conda
           CONDA_PREFIX_3=/Users/umbertofontanazza/opt/anaconda3
         CONDA_PYTHON_EXE=/Users/umbertofontanazza/opt/anaconda3/bin/python
               CONDA_ROOT=/Users/umbertofontanazza/opt/anaconda3
              CONDA_SHLVL=4
           CURL_CA_BUNDLE=<not set>
               LD_PRELOAD=<not set>
                  MANPATH=/usr/share/man:/usr/local/share/man:/Applications/Wireshark.app/Conten
                          ts/Resources/share/man:
                     PATH=/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/
                          sbin:/Applications/Wireshark.app/Contents/MacOS:/var/run/com.apple.sec
                          urity.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple
                          .security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.s
                          ecurity.cryptexd/codex.system/bootstrap/usr/appleinternal/bin
       REQUESTS_CA_BUNDLE=<not set>
            SSL_CERT_FILE=<not set>

     active environment : None
            shell level : 4
       user config file : /Users/umbertofontanazza/.condarc
 populated config files : /Users/umbertofontanazza/.condarc
          conda version : 23.9.0
    conda-build version : 3.27.0
         python version : 3.9.18.final.0
       virtual packages : __archspec=1=x86_64
                          __osx=10.16=0
                          __unix=0=0
       base environment : /Users/umbertofontanazza/opt/anaconda3  (writable)
      conda av data dir : /Users/umbertofontanazza/opt/anaconda3/etc/conda
  conda av metadata url : None
           channel URLs : https://repo.anaconda.com/pkgs/main/osx-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/osx-64
                          https://repo.anaconda.com/pkgs/r/noarch
          package cache : /Users/umbertofontanazza/opt/anaconda3/pkgs
                          /Users/umbertofontanazza/.conda/pkgs
       envs directories : /Users/umbertofontanazza/opt/anaconda3/envs
                          /Users/umbertofontanazza/.conda/envs
               platform : osx-64
             user-agent : conda/23.9.0 requests/2.31.0 CPython/3.9.18 Darwin/22.5.0 OSX/10.16
                UID:GID : 501:20
             netrc file : None
           offline mode : False


An unexpected error has occurred. Conda has prepared the above report.
If you suspect this error is being caused by a malfunctioning plugin,
consider using the --no-plugins option to turn off plugins.

Example: conda --no-plugins install <package>

Alternatively, you can set the CONDA_NO_PLUGINS environment variable on
the command line to run the command without plugins enabled.

Example: CONDA_NO_PLUGINS=true conda install <package>

Whereas if I open the therminal app it works just fine. I noticed that Vs code tries to remember the active env for each directory and sometimes the shell promp looks like two envs were active at the same time. I guess there is a set of commands that vs code executes when I open the terminal from Vs code, where can I see them?

Any idea on how to fix this?

Vlf answered 25/10, 2023 at 13:27 Comment(0)
A
4

Previously terminal.integrated.inheritEnv was true by default. In 2019 they had the plan to set it to false by default. It is mentioned that this might become standard in a few VSCode versions. See https://code.visualstudio.com/updates/v1_36#_launch-terminals-with-clean-environments.

It could be that they now changed it to be false by default, causing said problem [Needs verification].

When false the terminal does not use a VSCode environment but instead 'fetches and use the environment of the parent process of VS Code's "main process"

Changing terminal.integrated.inheritEnv to true again fixed the problem permanently for me.

Albumenize answered 19/1, 2024 at 9:49 Comment(2)
After changing this setting, the error message disappeared, but the conda env name occurred twice before the username. For example, (base)(base) user@host. It seems strange.Iolaiolande
I also get this doubled conda env name (in zsh), but I'll take it over the error any day.Anemo
A
3

This currently worked on in this Github Issue.

The problem is the extensions unsets CONDA_PREFIX which causes join(prefix, ...) to fail.


You have to manually set CONDA_PREFIX for the time being which depends on the environment.

For the base environment you can use:
export CONDA_PREFIX=$CONDA_ROOT

for others craft it manually:
export CONDA_PREFIX=$CONDA_ROOT/envs/<yourenvname>

However you have to do this for every new bash.

EDIT: Check also out Brian's comment below to set it permanently (I did not verify it):

# settings.json
"terminal.integrated.env.osx": { "CONDA_PREFIX":"$CONDA_ROOT/envs/<envname>" }
Albumenize answered 17/1, 2024 at 15:51 Comment(1)
you can set envs in your settings.json "terminal.integrated.env.osx": { "CONDA_PREFIX":"$CONDA_ROOT/envs/<envname>" }Mechellemechlin

© 2022 - 2025 — McMap. All rights reserved.