mar*_*er_ 106 python macos sudo pip
我已经开始使用我的Mac来安装Python软件包,就像我在工作时使用Windows PC一样; 但是在我的Mac上,我在写入日志文件或站点包时遇到了频繁的权限被拒绝错误.
因此我考虑过运行pip install <package>,sudo但考虑到我只是希望将其安装在我当前的用户帐户下,这是一个安全/可接受的sudo使用方法吗?
来自日志文件I/O错误的示例回溯:
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'
Run Code Online (Sandbox Code Playgroud)
更新
这可能取决于权限,但最好的方法是为python项目使用虚拟环境.sudo pip除非绝对必要,否则应避免跑步.
Bur*_*lid 98
使用虚拟环境:
$ virtualenv myenv
.. some output ..
$ source myenv/bin/activate
(myenv) $ pip install what-i-want
Run Code Online (Sandbox Code Playgroud)
如果sudo要为全局系统范围的Python安装安装内容,则只能使用或提升权限.
最好使用为您隔离软件包的虚拟环境.这样你就可以在不污染全局python安装的情况下玩游戏.
作为奖励,virtualenv不需要提升权限.
Pio*_*ost 39
它是可接受的安全运行
pip install下sudo?
它不安全而且不受欢迎 - 看看运行'sudo pip'有什么风险?
要在主目录中安装Python包,您不需要root权限.见描述的--user选项点子.
thr*_*you 24
您的原始问题是pip无法将日志写入文件夹.
IOError: [Errno 13] Permission denied: '/Users/markwalker/Library/Logs/pip.log'
Run Code Online (Sandbox Code Playgroud)
你需要cd到一个文件夹,在这个文件夹中,调用的进程可以这样编写/tmp,cd /tmp并且重新调用该命令可能会起作用但不是你想要的.
但实际上对于这种特殊情况(你不想sudo用于安装python包)并且不需要全局包安装,你可以使用这样的--user标志:
pip install --user <packagename>
Run Code Online (Sandbox Code Playgroud)
它会工作得很好.
我假设您有一个用户python python安装,并且不想打扰阅读virtualenv(这不是非常用户友好)或pipenv.
正如评论部分的一些人指出的那样,除非你不知道该做什么并陷入困境,否则下一个方法并不是一个好主意:
对于全局包的另一种方法,例如在您的情况下,您想要执行以下操作:
chown -R $USER /Library/Python/2.7/site-packages/
Run Code Online (Sandbox Code Playgroud)
或更一般地说
chown -R $USER <path to your global pip packages>
Run Code Online (Sandbox Code Playgroud)
因为我有同样的问题,我想强调,实际上Brian Cain的第一个评论是"IOError:[Errno 13]"的解决方案 - 问题:
如果在temp目录(cd /tmp)中执行,如果我运行则不再发生IOError sudo pip install foo.
看起来你的权限搞砸了.键入chown -R markwalker ~在终端和尝试pip一次?如果您已经分类,请告诉我.
virtualenvwrapper成功安装后我遇到问题virtualenv.
我这样做后,我的终端抱怨了:
pip install virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)
所以,我没有成功尝试过这个(不推荐):
sudo pip install virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)
然后,我成功安装了它:
pip install --user virtualenvwrapper
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
118292 次 |
| 最近记录: |