Asked By – markwalker_
I’ve started to use my Mac to install Python packages in the same way I do with my Windows PC at work; however on my Mac I’ve come across frequent permission denied errors while writing to log files or site-packages.
Therefore I thought about running
pip install <package> under
sudo but is that a safe/acceptable use of sudo considering I’m just wanting this to be installed under my current user account?
Example traceback from a logfile I/O error:
Command /usr/bin/python -c "import setuptools;__file__='/Users/markwalker/build/pycrypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /var/folders/tq/hy1fz_4j27v6rstzzw4vymnr0000gp/T/pip-k6f2FU-record/install-record.txt failed with error code 1 in /Users/markwalker/build/pycrypto Storing complete log in /Users/markwalker/Library/Logs/pip.log Traceback (most recent call last): File "/usr/local/bin/pip", line 8, in <module> load_entry_point('pip==1.1', 'console_scripts', 'pip')() File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py", line 116, in main return command.main(args[1:], options) File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 141, in main log_fp = open_logfile(log_fn, 'w') File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 168, in open_logfile log_fp = open(filename, mode) IOError: [Errno 13] Permission denied: '/Users/markwalker/Library/Logs/pip.log'
This was likely down to permissions, however the best approach is to use virtual environments for your python projects. Running
sudo pip should be avoided unless absolutely necessary.
Now we will see solution for issue: Getting “Permission Denied” when running pip as root on my Mac
Use a virtual environment:
$ virtualenv myenv .. some output .. $ source myenv/bin/activate (myenv) $ pip install what-i-want
You only use
sudo or elevated permissions when you want to install stuff for the global, system-wide Python installation.
It is best to use a virtual environment which isolates packages for you. That way you can play around without polluting the global python install.
As a bonus, virtualenv does not need elevated permissions.
This question is answered By – Burhan Khalid
This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0