Satadip Saha
Satadip Saha

Reputation: 137

Error: can't create or remove files in install directory

I'm trying to Setuptools as directed in Unix(wget) section in this page https://pypi.python.org/pypi/setuptools

But I'm getting the following error whenever I run this command

wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python

Error message:

--2014-04-19 17:29:52--  https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py
Resolving bitbucket.org (bitbucket.org)... 131.103.20.167, 131.103.20.168
Connecting to bitbucket.org (bitbucket.org)|131.103.20.167|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10332 (10K) [text/plain]
Saving to: `STDOUT'

100%[======================================>] 10,332      --.-K/s   in 0s      

2014-04-19 17:29:53 (267 MB/s) - written to stdout [10332/10332]

Extracting in /tmp/tmpDXrlBn
Now working in /tmp/tmpDXrlBn/setuptools-3.4.4
Installing Setuptools
running install
error: can't create or remove files in install directory

The following error occurred while trying to add or remove files in the
installation directory:

    [Errno 13] Permission denied: '/usr/local/lib/python2.7/dist-packages/test-easy-install-    19015.write-test'

The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:

/usr/local/lib/python2.7/dist-packages/

Perhaps your account does not have write access to this directory?  If the
installation directory is a system-owned directory, you may need to sign in
as the administrator or "root" account.  If you do not have administrative
access to this machine, you may wish to choose a different installation
directory, preferably one that is listed in your PYTHONPATH environment
variable.

For information on other options, you may wish to consult the
documentation at:

   https://pythonhosted.org/setuptools/easy_install.html

Please make the appropriate changes for your system and try again.

While browsing for the solution I found that sudo easy_install or changing the PYTHONPATH may work. I need a relatively detailed solution as I could get neither to work. Thanks in advance.

Upvotes: 1

Views: 12202

Answers (2)

Corley
Corley

Reputation: 11

This should be a red flag to anyone. If you are installing something in your own directory as your own user, and that directory is read/write/exec then this tool should not need root privileges to run unless it's installing some things in system directories = BAD.

If you've downloaded something and get this, I suggest you check the code of what it's doing thoroughly before ever running sudo to install. If you don't understand that then don't run sudo to force it to install. Further, on some platforms if it's installing to system directories it may overwrite or break existing dependencies and break your system. MAC is especially bad about this.

I suggest you look into some alternatives: 1. Per-User-Site-Packages - http://docs.python.org/whatsnew/2.6.html#pep-370-per-user-site-packages-directory 2. VirtualENV - http://pypi.python.org/pypi/virtualenv Allows you to clone your system python off so you don't interfere with it. 3. Look through the source. If there's some dependencies, maybe you could pre-install separately and then rerun the script.

Upvotes: 1

evading
evading

Reputation: 3090

The answer lies in the error message

/usr/local/lib/python2.7/dist-packages/

Perhaps your account does not have write access to this directory?  If the
installation directory is a system-owned directory, you may need to sign in
as the administrator or "root" account.  If you do not have administrative
access to this machine, you may wish to choose a different installation
directory, preferably one that is listed in your PYTHONPATH environment
variable.

If you run sudo su before you run your command it should work.

Upvotes: 3

Related Questions