I\'m trying to follow this guide on pipenv and virtualenv: http://docs.python-guide.org/en/latest/dev/virtualenvs/ . The problem is, I run into a problem when trying to
I had the same symptoms:
with open(path, 'w') as f:
PermissionError: [Errno 13] Permission denied: 'Pipfile'
the problem was that I had a Pipfile
in one of the parent directories and with different permissions (in my case, created by root
while experimenting). Deleting this Pipfile
resolved the issue. The same issue is discussed Pipenv issue.
More details: when trying to install/create a new virtual environment, pipenv looks into all the parent directories to see if there already is a Pipfile
in there. If there is a Pipfile
, and was created with different permissions (e.g. under root
via sudo
in my case), pipenv will not have permissions to write to this Pipfile
, creating a somewhat unclear error message.
A tell tale sing is that pipenv --where
prints a different directory name than you'd expect (or prints a directory path when you're just creating a new environment instead of "No pipfile present at project home...")
Make sure you've added the UserBase's bin directory to your path (follow the Note box at the documentation you were following to see how to do this).
The third command you mentioned should just be: pipenv install requests
.
Longer version:
I'll go a little more in depth for some of the command line concepts since you're getting started with the command line (and for others who would like a little more in depth reference).
You show three commands:
pip3 install --user pipenv
python3 -m pipenv
python3 -m pipenv install requests
pipenv install requests
. But it won't work until you've added UserBase's bin to your path (you'll get a pipenv: command not found
error).Your PATH is where your shell will search for the command you've listed. See changing your path on Mac or Linux or Windows.
As the documentation you were following mentions, you want to run python3 -m site
, you'll get output something like the following:
$ python -m site
.
.
.
USER_BASE: '/Users/<myusername>/Library/Python/3.6' (exists)
USER_SITE: '/Users/<myusername>/Library/Python/3.6/lib/python/site-packages' (exists)
ENABLE_USER_SITE: True
Now that you know where your USER_BASE
is, add a /bin
onto the end and add it to your PATH. Again see OS specific instructions but on OSX you can add export PATH="$PATH:/Users/<myusername>/Library/Python/3.6/bin
to your ~/.profile
, run source ~/.profile
, and your shell will now search that directory when you enter the command pipenv
.