How to clear the conda environment variables?

2024/10/8 18:41:29

While I was setting an environment variable on a conda base env, I made an error in the path that was supposed to be assigned to the variable. I was trying to set the $PYSPARK_PYTHON env variable on the conda env. The set command conda env config vars set $PYSPARK_PYTHON=errorpath executed successfully even though the path has an error, and asked me to reactivate the environment. And I am unable to activate the env.

When I check the env var list by doing the following: conda env config vars list -n base

It shows me the incorrect path which I have set but without the variable name as follows: = C:\\ProgramData\\Anaconda3\\envs\\some-env\\python3.7

And because of this above incorrect env variable, I am unable to activate the base env. It gives me an error as follows:

Invoke-Expression : At line:6 char:1
+ $Env: = "C:\\ProgramData\\Anaconda3\\envs\\some-env\\python3.7"
+ ~~~~~
Variable reference is not valid. ':' was not followed by a valid variable name character. Consider using ${} to
delimit the name.
At C:\ProgramData\Anaconda3\shell\condabin\Conda.psm1:101 char:9
+         Invoke-Expression -Command $activateCommand;
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+ CategoryInfo          : ParserError: (:) [Invoke-Expression], ParseException+ FullyQualifiedErrorId : InvalidVariableReferenceWithDrive,Microsoft.PowerShell.Commands.InvokeExpressionCommand

I am not sure how to fix this error, but I want to just remove the environment variable from the base env.

I tried unsetting it using the command conda env config vars unset $PYSPARK_PYTHON -n base. But it doesn't work. I think as the variable declaration is missing in the list, I am unable to access the variable. I did try it without the $PYSPARK_PYTHON hoping it removes all the orphaned env variables but it doesn't.

Could anyone help me with this? Is there any way to reset the base environment without affecting the other envs, or reset the env variables list on the given env?

Thanks

Answer

Try looking for a JSON file called state that resides in the conda-meta directory of your environment. Depending on your OS and install directory the conda-meta will be installed in different locations. The default install path for each OS is

  • Windows: C:\Users\<your-username>\Anaconda3\conda-meta\state
  • Mac:/Users/<your-username>/anaconda3/conda-meta/state or ~/opt//anaconda3/conda-meta/state for GUI install
  • Linux:/home/<your-username>/anaconda3/conda-meta/state

By editing that file you can manually change your environment variables.

Further Explanation

I recently messed up a conda environment too and only found this answer through inspecting the code for conda.

In the code you can see that the environment variables are saved and loaded from a file

    def _get_environment_state_file(self):env_vars_file = join(self.prefix_path, PREFIX_STATE_FILE)if lexists(env_vars_file):with open(env_vars_file, 'r') as f:prefix_state = json.loads(f.read(), object_pairs_hook=OrderedDict)else:prefix_state = {}return prefix_statedef get_environment_env_vars(self):prefix_state = self._get_environment_state_file()env_vars_all = OrderedDict(prefix_state.get('env_vars', {}))env_vars = {k: v for k, v in env_vars_all.items()if v != CONDA_ENV_VARS_UNSET_VAR}return env_vars

If you print env_vars_file or look where PREFIX_STATE_FILE is defined you will find the file the environment variables are stored in for the environment.

https://en.xdnf.cn/q/70106.html

Related Q&A

Create duplicates in the list

I havelist = [a, b, c, d]andnumbers = [2, 4, 3, 1]I want to get a list of the type of:new_list = [a, a, b, b, b, b, c, c, c, d]This is what I have so far:new_list=[] for i in numbers: for x in list: f…

cxfreeze aiohttp cannot import compat

Im trying to use cx_freeze to build a binary dist for an web application written in Python 3 using the aiohttp package.Basically I did:cxfreeze server.pyand got a dist outputBut when running the ./serv…

Python open() requires full path [duplicate]

This question already has answers here:open() gives FileNotFoundError / IOError: [Errno 2] No such file or directory(11 answers)Closed 9 months ago.I am writing a script to read a csv file. The csv fil…

Pandas to parquet file

I am trying to save a pandas object to parquet with the following code: LABL = datetime.now().strftime("%Y%m%d_%H%M%S") df.to_parquet("/data/TargetData_Raw_{}.parquet".format(LABL))…

Wildcard in dictionary key

Suppose I have a dictionary:rank_dict = {V*: 1, A*: 2, V: 3,A: 4}As you can see, I have added a * to the end of one V. Whereas a 3 may be the value for just V, I want another key for V1, V2, V2234432, …

How to read emails from gmail?

I am trying to connect my gmail to python, but show me this error: I already checked my password, any idea what can be? b[AUTHENTICATIONFAILED] Invalid credentials (Failure) Traceback (most recent cal…

Python multiprocessing returning AttributeError when following documentation code [duplicate]

This question already has answers here:python multiprocessing in Jupyter on Windows: AttributeError: Cant get attribute "abc"(4 answers)Closed 4 years ago.I decided to try and get into the mu…

Python - How can I find if an item exists in multidimensional array?

Ive tried a few approaches, none of which seem to work for me. board = [[0,0,0,0],[0,0,0,0]]if not 0 in board:# the board is "full"I then tried:if not 0 in board[0] or not 0 in board[1]:# the…

Convert Geo json with nested lists to pandas dataframe

Ive a massive geo json in this form:{features: [{properties: {MARKET: Albany,geometry: {coordinates: [[[-74.264948, 42.419877, 0],[-74.262041, 42.425856, 0],[-74.261175, 42.427631, 0],[-74.260384, 42.4…

Pymongo - ValueError: NaTType does not support utcoffset when using insert_many

I am trying to incrementally copy documents from one database to another. Some fields contain date time values in the following format:2016-09-22 00:00:00while others are in this format:2016-09-27 09:0…