How to avoid "Permission denied" when using pip with virtualenv
I attempt to deploy a Python package with pip
in a virtual environment on an Ubuntu machine, but encounter a permission-related issue. For example:
(TestVirtualEnv)test@testServer:~$ pip install markdown2
terminates by:
error: could not create '/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py': Permission denied
I can't sudo
, since it will install the package globally, and not within the virtual environment. I chown
ed site-packages
; ls
shows only directories related to easy_install
, pip
and setuptools
, and nothing related to Markdown.
How to deploy a package in a virtual environment with pip
without encountering permission-related errors?
Solution:
If you created the virtualenv as root, run the following command:
sudo chown -R your_username:your_username path/to/virtuaelenv/
This will probably fix your problem.
Cheers
virtualenv
permission problems might occur when you create the virtualenv
as sudo
and then operate without sudo
in the virtualenv
.
As found out in your question's comment, the solution here is to create the virtualenv
without sudo
to be able to work (esp. write) in it without sudo
.
In my case, I was using mkvirtualenv
, but didn't tell it I was going to be using python3. I got this error:
mkvirtualenv hug
pip3 install hug -U
....
error: could not create '/usr/lib/python3.4/site-packages': Permission denied
It worked after specifying python3:
mkvirtualenv --python=/usr/bin/python3 hug
pip3 install hug -U