Updating Anaconda fails: Environment Not Writable Error - anaconda

I'm trying to update Anaconda and its packages using conda update --name root conda, but it fails every time.
Error message : EnvironmentNotWritableError: The current user does not
have write permissions to the target environment. environment
location: C:\ProgramData\Anaconda3
Environment location: C:\ProgramData\Anaconda3. I replaced the root with base, still I get the same error.
Any help?

start your command prompt with run as administrator

If you face this issue in Linux, one of the common reasons can be that the folder "anaconda3" or "anaconda2" has root ownership. This prevents other users from writing into the folder.
This can be resolved by changing the ownership of the folder from root to "USER" by running the command:
sudo chown -R $USER:$USER anaconda3
or sudo chown -R $USER:$USER <path of anaconda 3/2 folder>
Note: How to figure out whether a folder has root ownership?
-- There will be a lock symbol on the top right corner of the respective folder.
Or right-click on the folder->properties and you will be able to see the owner details
The -R argument lets the $USER access all the folders and files within the folder anaconda3 or anaconda2 or any respective folder. It stands for "recursive".

On Windows, search for Anaconda PowerShell Prompt. Right click the program and select Run as administrator. In the command prompt, execute the following command:
conda update -n base -c defaults conda
Your Anaconda should now update without admin related errors.

Open this folder "C:\ProgramData\" and right-click on "\Anaconda3". go to properties -> security and check all the boxes for each user. This worked for me.

If you get this error under Linux when running conda using sudo, you might be suffering from bug #7267:
When logging in as non-root user via sudo, e.g. by:
sudo -u myuser -i
conda seems to assume that it is run as root and raises an error.
The only known workaround seems to be: Add the following line to your ~/.bashrc:
unset SUDO_UID SUDO_GID SUDO_USER
...or unset the ENV variables by running the line in a different way before running conda.
If you mistakenly installed anaconda/miniconda as root/via sudo this can also lead to the same error, then you might want to do the following:
sudo chown -R username /path/to/anaconda3
Tested with conda 4.6.14.

I had installed anaconda via the system installer on OS X in the past, which created a ~/.conda/environments.txt owned by root. Conda could not modify this file, hence the error.
To fix this issue, I changed the ownership of that directory and file to my username:
sudo chown -R $USER ~/.conda

On Windows in general, running command prompt with administrator works. But if you don't want to do that every time, specify Full control permissions of your user (or simply all users) on Anaconda3 directory. Be aware that specifying it for all users allows other users to install their own packages and modify the content.

I had the same issue and the base environment was in C:\ProgramData\Anaconda3. This is the case, when Anaconda is installed for all users.
As a solution, I re-installed Anaconda just for me and now the base environment is in \AppData\Local\Continuum\anaconda3. This now can be updated via conda update without admin privileges.

As an alternative, I would suggest looking at your conda config file.
Reason
Sometimes for creating a virtual env at a specified location other than the pre-defined path at ~/anaconda3/envs we append the conda config file using: conda config --append envs_dirs /path/to/envs where envs_dirs is a specified function in config file for allocating different paths where conda can find your virtual envs. Removing a recently added path in this config file may solve the problem.
Solution
$:> conda config --show envs_dirs
envs_dirs:
- /home/some_recent_path # remove this
- /home/.../anaconda3/envs
Note the value specifing a different directory other than the predefined location, and remove it using
$:> conda config --remove envs_dirs /home/some_recent_path
Now the config file envs_dirs is set to default location of envs. Try creating a new env now.

this line of code on your terminal, solves the problem
$ sudo chown -R $USER:$USER anaconda 3

WINDOWS:
I also got following error while (base) PS E:\Python> conda install ConfigParser
Verifying transaction: failed
EnvironmentNotWritableError: The current user does not have write permissions to the target environment.
environment location: C:\ProgramData\Anaconda3
My solution: Open Command prompt as administrator, then above command again and it worked.
C:\WINDOWS\system32>conda install ConfigParser
Collecting package metadata (current_repodata.json): done Solving environment: done
Package Plan
environment location: C:\ProgramData\Anaconda3
added / updated specs:
- configparser
The following NEW packages will be INSTALLED:
configparser pkgs/main/noarch::configparser-5.0.2-pyhd3eb1b0_0
Proceed ([y]/n)? y
Preparing transaction: done Verifying transaction: done Executing
transaction: done

I had the same problem. The cause for me was that when downloading Anaconda, I chose 'download for all users' instead of 'just for me'. I uninstalled it, re-installed it and corrected that. And I'm not getting this error anymore.

On Windows,
Create a new environment with
conda create --name py35 python=3.5
see conda cheat sheet
Activate this environment
activate py35
Now you don't need to have root access to your new environment.
As mentioned in a comment to the accepted answer, the default environment base requires administrative rights on Windows:
On Windows, if you're trying to install packages into the base
environment (which is installed to C:\ProgramData\Anaconda3), you'll
need admin access. If you first create an environment (which should
install in your user directory under .conda\envs) and activate it, you
no longer need admin right for that environment. Don't forget to
activate the env after creating it. – C.J. Jackson

In my case somehow CONDA_ENVS_PATH was removed, so I was having NotWritableError. So I fixed the error by specifying
CONDA_ENVS_PATH=~/my-envs:/opt/anaconda/envs
in the .bashrc file

I was also suffered by same problem. I resolved the problem by reinstalling anaconda(While installation at this time I selected "just for me" as user) and my problem was solved.Try the same

CONDA UPDATE - NO WRITE ACCESS PROBLEM ## FIXED##
SIMPLE SOLUTION:
Press the Windows+S combination button and type "cmd" into it.
Right click on the Command Prompt App result that shows up and click on "Run as administrator"
Now, in the black window that is open (i.e. your Command prompt), copy and paste the following to check for your version: conda --version
If you want the latest update, then update Conda by running the update command by pasting the following and clicking enter in the command prompt(black window):
conda update conda
If a newer version is available, it will prompt you for a yes/no to install the update. Type "yes" and then press Enter to update.

Deleting file .condarc (eg./root/.condarc) in the user's home directory before installation, resolved the issue.

Related

Why did my terminal suddenly has darwin13 as host? How do I fix this?

I was trying to install Kaggle but then all of a u sudden I see:
#x86_64-apple-darwin13 on my terminal.
How do I switch this back? I was trying some solutions I found online but every time I run open ~.bash_profile it says:
zsh: no such user or named directory: .bash_profile
Every time turn on terminal, conda will be activated automatically.
Try the following command should work
conda config --set auto_activate_base false

How to create a desktop-entry for anaconda on Ubuntu 17.10?

I've recently installed anaconda3 in Ubuntu 17.10 (system environment). To run anaconda-navigator, I've to activate root for each time as
Source ~/anaconda3/bin/activate root
And to run it I've to write each time
anaconda-navigator
Now I am wanted to create a desktop entry but I'm having errors at multiple stages. Can you please explain from beginning how to create a desktop-entry for anaconda3 on Linux?
EDIT: I've tried using this post on AskUbuntu. But, it failed for me. It is not showing on dock-bar as well as in /usr/share/applications. I'm really frustrated.
First, check if anaconda3 is installed on your system or not (Sometime the package may be broken due to network issues during installation (Not worked for me)). And whether you are able to launch anaconda-navigator without a desktop entry.
For creating a desktop entry
Step 1. Open your text editor and save the following content as Anaconda.desktop to your home directory.
[Desktop Entry]
Version=1.0
Type=Application
Name=Anaconda-Navigator
GenericName=Anaconda
Comment=Scientific Python Development Environment - Python3
Exec='$HOME/anaconda3/bin/anaconda-navigator'
Categories=Development;Science;IDE;Qt;Education;
Icon=$HOME/anaconda3/lib/python3.8/site-packages/anaconda_navigator/static/images/anaconda-icon-256x256.png
Terminal=false
StartupNotify=true
MimeType=text/x-python;
Take care with the Python version. in $HOME/anaconda3/lib/python3.8/site-packages/anaconda_navigator/static/images/anaconda-icon-256x256.png change python3.8 if needed
Step 2. Copy your Anaconda.desktop to /usr/share/applications/ as root (Because you might need permission to copy at /usr/share/applications/)
sudo cp Anaconda.desktop /usr/share/applications
This will create a desktop entry named Anaconda in /usr/share/applications/.
Step 3. add this line export PATH="$HOME/anaconda3/bin:$PATH" to your /etc/profile or $HOME/.bashrc
Step 4. Check if Anaconda is added to your application dock. If you didn't find it, search it in search-bar. Or you can run directly from /usr/share/applications/Anaconda.desktop.

GO does not exist when logged in as sudo, does when logged in as user

The title is the problem - here is a brief explanation as to how I got here as I imagine that may help with sleuthing.
I installed go, and everything was fine. I ran build essential golang command on Ubuntu, and all of a sudden my go version was out of sync with my /usr/local/go/src/VERSION file.
I deleted my go files at /usr/local/go/, as well as the go and the go-1.8 folders in /usr/bin/. I then reinstalled go at /usr/local/go
Now, when I run go env as a user, the output looks correct. However (the title), when I am sudo, no go commands are recognized and I get the following message: The program 'go' can be found in the following packages:
* golang-go
* gccgo-go
As a user, some of my go env output is:
GOPATH="/home/{me}/go"
GOROOT="/usr/local/go"
As a user, my echo $PATH is :
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/home/{me}/go/bin
My ~/.profile includes:
export GOPATH=$HOME/go
export PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
Help, please? : )
You should ask in another community, like: unix & linux
But, the problem is that when you log as root, the PATH variable is set as configured for root user. you have to configure the PATH environment variable of root user, or run su/sudo as following:
su --preserve-environment -
sudo --preserve-env bash

Link old envs to conda

We've just migrated from windows7 to windows10 and had a lot of conda environments associated with each their own experiment.
The envs all exist in, say, F:\backup\<experiment_name>\conda\envs\ and as they were created with conda, conda had them registered. Now - with fresh installs of Anaconda3 we've lost the ease of access from conda as conda info --envs only returns:
D:\>conda info --envs
# conda environments:
#
root * D:\bin\anaconda3
What's the easiest way to get the old envs listed as if they were created with conda? There must be a register somewhere that I could update...?
You can add the backup path to envs_dirs in your .condarc config file.
It can be done with:
conda config --append envs_dirs F:\backup\<experiment_name>\conda\envs\
Or just with a manual edit of the file (it's YAML)
envs_dirs:
- D:\bin\anaconda3\envs
- F:\backup\<experiment_name>\conda\envs\
See the official doc for more details.
In my Anaconda installation on Windows 7 there is a file C:\Users\MYUSERNAME\.conda\environments.txt which contains a plain-text list of the paths of all my environments.
If I create a renamed duplicate of one of these environment folders (say to mynewenv) and edit the new path into the environments.txt file, it appears in the output from conda info --envs and I can successfully (as far as I can tell from a quick test) activate the new environment with activate mynewenv.
That may be enough to sort you out, but if there's anything about the old environments that still isn't registered properly then you should be able to export the environment contents to a .yml file and create a brand new copy by specifying that file to the conda env create command.

conda update CondaHTTPError: HTTP None

Midway through running Conda Update --all, the update stalled. Multiple packages had been updated. Now, when I run conda update --all or conda update conda, I get this response:
(C:\Users\*****\AppData\Local\Continuum\Anaconda3) C:\Users\*****>conda update conda
Fetching package metadata ...
CondaHTTPError: HTTP None None for url <None>
Elapsed: None
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
SSLError(SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')],)",),),)
I've repeated conda update conda over multiple days, with no change in results. I can see there is no HTTP, however conda info --a shows channel URLs.
(C:\Users\*****\AppData\Local\Continuum\Anaconda3) C:\Users\*****>conda info -a
Current conda install:
platform : win-64
conda version : 4.3.13
conda is private : False
conda-env version : 4.3.13
conda-build version : 2.1.5
python version : 3.5.3.final.0
requests version : 2.13.0
root environment : C:\Users\*****\AppData\Local\Continuum\Anaconda3 (writable)
default environment : C:\Users\*****\AppData\Local\Continuum\Anaconda3
envs directories : C:\Users\*****\AppData\Local\Continuum\Anaconda3\envs
C:\Users\*****\AppData\Local\conda\conda\envs
C:\Users\*****\.conda\envs
package cache : C:\Users\*****\AppData\Local\Continuum\Anaconda3\pkgs
C:\Users\*****\AppData\Local\conda\conda\pkgs
channel URLs : https://conda.anaconda.org/anaconda-fusion/win-64
https://conda.anaconda.org/anaconda-fusion/noarch
https://repo.continuum.io/pkgs/free/win-64
https://repo.continuum.io/pkgs/free/noarch
https://repo.continuum.io/pkgs/r/win-64
https://repo.continuum.io/pkgs/r/noarch
https://repo.continuum.io/pkgs/pro/win-64
https://repo.continuum.io/pkgs/pro/noarch
https://repo.continuum.io/pkgs/msys2/win-64
https://repo.continuum.io/pkgs/msys2/noarch
config file : C:\Users\*****\.condarc
offline mode : False
user-agent : conda/4.3.13 requests/2.13.0 CPython/3.5.3 Windows/7 Windows/6.1.7601
How do I get conda update to call a correct HTTP address?
My original answer got flagged as duplicate because I answered a similar question with the same answer, I wasn't aware that this is not allowed. I have marked my other response as a duplicate. Hopefully, this stays up!
I almost spent two days running in circles trying all the solutions I could find on the Internet, but here is what worked for me.
So, CondaHTTPError aka SSL module is not available error is caused by the missing/misplacement of libcrypto file in anaconda3/DLLs folder:
Tl;dr:
From anaconda3\Library\bin copy below files and paste them in anaconda3/DLLs:
- libcrypto-1_1-x64.dll
- libssl-1_1-x64.dll
Detailed answer:
Uninstall any Python versions you have (e.g. Python 3.7 or Python 3.8)
go to Control Panel--> Program and Features--> Select Python-->
uninstall
Uninstall any Anaconda versions you might have (e.g. Anaconda or miniConda)
For Anaconda:
go to Control Panel--> Program and Features--> Select Anaconda-->uninstall
For miniConda
go to Control Panel--> Program and Features--> Select miniconda--> uninstall
Delete any leftover Environment variables
go to Control Panel--> System--> Advanced System settings (on left side)--> in System Properties click on Environment Variables button--> in User Variable select Path and click the Edit button--> delete any path related to Anaconda, miniConda or Python.
E.g.
C:\Users\Bob \AppData\Local\Programs\Anaconda\...
C:\Users\Bob \AppData\Local\Programs\miniconda\...
b. If you don’t see any paths related to Anaconda, miniConda or Python; you are good to go.
Reboot your machine
Download the latest version of Anaconda
Run the Installer; keep all the default settings
Go to your anaconda3/library/bin folder:
E.g.C:\Users\Bob\AppData\Local\Continuum\anaconda3\Library\bin
Copy these files:
libcrypto-1_1-x64.dll
libssl-1_1-x64.dll
paste these in anaconda3/DLLs folder:
Reopen the Anaconda Prompt and test with any command that requires an Internet connection.
E.g.
conda update conda
Or with
conda update --all
Use the code below in your command line :
conda config --set ssl_verify no
Check if you're behind a corporate firewall that has an HTTPS/SSL proxy. If so, you may need to change the line in .condarc from ssl_verify: true to ssl_verify: false.
Or, as suggested by th0masb in the comments, using the command:
conda config --set ssl_verify false
Try to start Anaconda Prompt as Administrator (click right button of mouse before starting it), and make the same order.
Install the latest OpenSSl from this site: https://slproweb.com/products/Win32OpenSSL.html the current latest version is 1.1.1. Now I can install packages via pip and conda successfully.
I faced the same problem on Mac OS X and with Miniconda. After trying many of the proposed solutions for hours I found that I needed to correctly set Condas environment to use the Root certificate that my company provided rather than the generic ones that Conda provides.
Here is how I solved it:
Open Chrome, got to any website, click on the lock icon on the left
of the URL. Click on «Certificate» on the dropdown. In the next
window you see a stack of certificates. The uppermost (aka top line
in window) is the root certificate (e.g. Zscaler Root CA in my case,
yours will very likely be a different one).
Open Mac OS keychain, click on «Certificates» and choose among the many certificates the root certificate that you just identified. Export this to any folder of your choosing.
Convert this certificate with openssl: openssl x509 -inform der -in /path/to/your/certificate.cer -out /path/to/converted/certificate.pem
For a quick check set your shell to acknowledge the certificate: export REQUESTS_CA_BUNDLE=/path/to/converted/certificate.pem
To set this permanently open your shell profile (.bshrs or e.g. .zshrc) and add this line: export REQUESTS_CA_BUNDLE=/path/to/converted/certificate.pem. Now exit your terminal/shell and reopen. Check again.
You should be set and Conda should work fine.
PS: I'm aware that OP works on Windows. Nonetheless I leave this solution here because I think it can help solving the underlying root cause.
Type "conda config --show" to check the configuration information and make sure the addresses in the channels can be accessed normally.
I am using python 3.7.4 and I have just downloaded the conda and tried setting up the tensorflow but got http error.
I tried several steps mentioned above but it dint solve my problem.
I solved it by first activating conda. if you are using conda for first time you need to activate it using conda init command and then disable SSL verification conda config --set ssl_verify false
After above steps my tfp setup worked perfectly!!!
Download cacert.pem from https://curl.haxx.se/ca/cacert.pem,
save to /this/is/cert/path
open ~/.bashrc or any profile file you have
add export REQUESTS_CA_BUNDLE=/this/is/cert/path ...
open new terminal
conda update conda
You should check your .condarc file located in your Miniconda3/Anaconda3 root directory. There should be a line with just a hyphen. This line corresponds to the None channel. Deleting the line fixed the issue for me.
For the type of error above, you have to remove the proxy in environment variable. To do this follow this step :-
Open the Environment Variables window==>>>>>
To make many of the edits shown in this article, you first need to open the Environment Variables window. This guide explains how to open this window and shows you the basics about working with environment variables: Simple questions: What are environment variables in Windows?
If you want to skip reading it, one path that works the same in all versions of Windows is to open the Control Panel and go to “System and Security - > System.” There, click or tap the “Advanced system settings” link on the left. The System Properties window is opened. There click the Environment Variables button.
In this you have to select that one which have proxy , and delete ,then click Ok.
Now restart your Anaconda prompt.
It worked for me; I hope it also work for you.
Good luck
Enable 'k' flag in your conda update command. For example,
conda update anaconda-navigator -k
That will allow conda to make insecure connections to download packages. This is especially useful when you are behind a proxy server.
Try to type "conda update conda" from the (base) environment
The DLLs delivered by Anaconda3 are located here:
D:\Anaconda3\Library\bin
My workaround:
I have copied the following files
libcrypto-1_1-x64.*
libssl-1_1-x64.*
from D:\Anaconda3\Library\bin to D:\Anaconda3\DLLs.
And it works as a charm!
Just need to add binaries into you path, and done - it will take care about your openssl and everything.
C:\Users\{username}\Miniconda3\Library\bin
Search environment variables, in both User and System variables. Add the bin location in Path. Put the path at the end without changing anything. Save Apply and re-open your terminal. It should be now allowing you to install libraries easily.
I had the same error, and I tried most of the methods, but none of them worked. I checked the version of anaconda3 it was 4.2.0 which I realized was in beta which might be the reason.
I solved it by uninstalling everything and installing the latest version (5.1.0). It worked after that.
Refer link for details
Please update to the latest version of Navigator.
On Navigator click on the update button on the top right of the interface or
on the terminal type
$ conda update anaconda-navigator
After reading FAR too many posts running around in circles, I found a simple solution at least to my flavor of this problem, which should also shed some light on root cause.
Using sudo of same command (see below)
conda create -n tensorenviron
(output below)
Solving environment: done
CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://repo.anaconda.com/pkgs/r/osx-64/repodata.json.bz2>
Elapsed: -
An HTTP error occurred when trying to retrieve this URL.
HTTP errors are often intermittent, and a simple retry will get you on your way.
If your current network has https://www.anaconda.com blocked, please file
a support request with your network engineering team.
SSLError(MaxRetryError('HTTPSConnectionPool(host=\'repo.anaconda.com\', port=443): Max retries exceeded with url: /pkgs/r/osx-64/repodata.json.bz2 (Caused by SSLError("Can\'t connect to HTTPS URL because the SSL module is not available."))'))
sudo conda create -n tensorenviron
(output below)
Password:
Solving environment: done
## Package Plan ##
environment location: /Users/damonw/anaconda3/envs/tensorenviron
Proceed ([y]/n)? y
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use:
# > source activate tensorenviron
#
# To deactivate an active environment, use:
# > source deactivate
#
I also faced the same problem and manually followed these steps to reach the desired result.
you can enter --> https://repo.anaconda.com/pkgs/main/win-64/
you can install packeges whatever you want and later :
you can write to Anaconda Prompt -->
conda install C:\Users\xxxx\Downloads\xlrd-1.2.0-py37_0.tar.bz2
Have a good luck!
Just in case anyone else is stuck behind a company proxy and the previous answers have not worked then try changing your proxies. Interestingly, I had already set my proxies in my environment variables but deleting them and then recreating them worked for some reason for me.
In my case, it was a proxy server setting that was blocking the installation. Switching the proxy server off and then connecting to a different WiFi got it working for me!
Tried everything to fix this issue. Hours of wasted time.
Reset Windows 10 firewall
downgraded/upgraded pip
downgraded/upgraded conda
tried new environments
installed pip from pypi (get-pip.py)
upgraded Debian on Windows environment
Nothing fixed it. Then noticed that other conda environments worked perfectly.
The issue was the pip cache was mangled if you reinstalled an environment with a name you used before and did some sort of upgrade of conda/distro in-between. Under linux i ran the following to fix the issue:
rm -rf $HOME/.cache
and looks like there is a similar setup for Windows based on the info you gave above.
I solved this by changing the proxy.
Change
https_proxy=https://xxx.xxx
to
https_proxy=http://xxx.xxx
make it works.

Resources