我试图在pipenv和virtualenv上遵循本指南:http://docs.python-guide.org/en/latest/dev/virtualenvs/。问题是,我在尝试$ pipenv install requests
时遇到问题(我认为应该是$python3 -m pipenv install requests
,因为简单地pipenv
会返回未找到的命令。)
为什么许可被拒绝?
我是一个终端菜鸟,所以请耐心等待。
$ pip3 install --user pipenv
$ python3 -m pipenv
Usage: __main__.py [OPTIONS] COMMAND [ARGS]...
$ python3 -m pipenv install requests
Creating a Pipfile for this project...
Traceback (most recent call last):
File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/usr/local/Cellar/python3/3.6.2/Frameworks/Python.framework/Versions/3.6/lib/python3.6/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/__main__.py", line 4, in <module>
cli()
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/vendor/click/core.py", line 722, in __call__
return self.main(*args, **kwargs)
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/vendor/click/core.py", line 697, in main
rv = self.invoke(ctx)
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/vendor/click/core.py", line 1066, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/vendor/click/core.py", line 895, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/vendor/click/core.py", line 535, in invoke
return callback(*args, **kwargs)
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/cli.py", line 895, in install
ensure_project(three=three, python=python)
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/cli.py", line 180, in ensure_project
ensure_pipfile(validate=validate)
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/cli.py", line 141, in ensure_pipfile
project.create_pipfile()
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/project.py", line 219, in create_pipfile
self.write_toml(data, 'Pipfile')
File "/Users/sahandzarrinkoub/Library/Python/3.6/lib/python/site-packages/pipenv/project.py", line 226, in write_toml
with open(path, 'w') as f:
PermissionError: [Errno 13] Permission denied: 'Pipfile'
答案 0 :(得分:3)
确保您已将UserBase的bin目录添加到路径中(请按照您所关注的documentation处的注释框查看如何执行此操作。)
您提到的第三个命令应该是:pipenv install requests
。
更长的版本:
我会更深入地了解一些命令行概念,因为您已经开始使用命令行(以及其他想要更深入参考的人)。
您显示三个命令:
pip3 install --user pipenv
python3 -m pipenv
python3 -m pipenv install requests
pipenv install requests
。但是在你将UserBase的bin添加到你的路径之后它才会起作用(你会得到pipenv: command not found
错误。)您的PATH
是您的shell将搜索您列出的命令的位置。请参阅更改Mac or Linux或Windows上的路径。
正如你提到的documentation提到的那样,你想要运行python3 -m site
,你会得到如下输出:
$ 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
现在您知道USER_BASE
的位置,在末尾添加/bin
并将其添加到您的路径中。再次查看操作系统特定说明,但在OSX上,您可以将export PATH="$PATH:/Users/<myusername>/Library/Python/3.6/bin
添加到~/.profile
,运行source ~/.profile
,然后您的shell将在您输入命令pipenv
时搜索该目录。
答案 1 :(得分:0)
我有同样的症状:
with open(path, 'w') as f:
PermissionError: [Errno 13] Permission denied: 'Pipfile'
问题是我在其中一个父目录中有Pipfile
并且具有不同的权限(在我的情况下,由root
在实验时创建)。删除此Pipfile
解决了这个问题。我们讨论了同样的问题Pipenv issue。
更多详细信息:在尝试安装/创建新的虚拟环境时,pipenv会查看所有父目录,以查看其中是否已存在Pipfile
。如果有Pipfile
,并且使用不同的权限创建(例如,在我的情况下通过root
sudo
下),则pipenv将无权写入此Pipfile
,创建一个有点不清楚的错误消息。
告诉故事是pipenv --where
打印的目录名不同于您所期望的(或者在您创建新环境而不是&#34时打印目录路径;否pipfile出现在项目主页......&#34;)
答案 2 :(得分:-1)
Pipfile的权限被拒绝,因为要创建Pipfile的目录没有写权限。例如做这样的事情
sudo chmod 775项目