当前位置: 首页 > 面试题库 >

Python-在sudo下运行pip install是否可以接受并且安全?

太叔俊侠
2023-03-14
问题内容

我已经开始使用Mac安装Python软件包,就像在工作Windows PC时一样。但是在Mac上,我在写入日志文件或站点程序包时经常遇到权限被拒绝的错误。

因此,我考虑过pip install <package>sudosudo 下运行,但是考虑到我只是想将其安装在当前用户帐户下,是否安全/可接受地使用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'

更新 这可能取决于权限,但是最好的方法是为你的python项目使用虚拟环境。sudo pip除非绝对必要,否则应避免运行。


问题答案:

使用虚拟环境:

$ virtualenv myenv
.. some output ..
$ source myenv/bin/activate
(myenv) $ pip install what-i-want

仅sudo当要为全局的系统级Python安装安装内容时,才使用或提升权限。

最好使用虚拟环境为你隔离软件包。这样,你可以在不影响全局python安装的情况下进行游戏。

另外,virtualenv不需要提升的权限。



 类似资料:
  • valgrind快速启动页面提到: 这将我引向这样一个问题:是否有充分的理由不在生产中从程序中消除这样的错误?发布包含此类错误的程序有什么好处吗?如果有,开发人员如何保护它的安全,尽管据我所知,包含此类错误的程序可以不可预测地运行,并且无法对其行为做出一般假设?如果是这样,你能提供真实世界的例子,说明程序运行时有这些错误比没有错误更好吗?

  • 问题内容: 我有一个vpn连接,当我运行python -m SimpleHTTPServer时,它在0.0.0.0:8000上提供服务,这意味着可以通过本地主机 和 我的真实IP访问它。我不想让机器人扫描我,并且对仅通过本地主机访问服务器感兴趣。 可能吗? 也欢迎任何其他可以使用命令行立即执行的简单http服务器。 问题答案: 如果您阅读了源代码,您将看到只能在命令行上覆盖端口。如果你想改变它在服

  • 问题内容: 我正在一个项目中,该项目有很多由库创建的对象,并且无法访问这些对象的创建过程。 以下代码片段很好地说明了我的问题。 码: 是Clazz在编译时可能会或可能不会实现的接口。 码: 以下代码是我遇到的问题。请注意以下几点: 仅在c是的实例时调用。 并且都是我无法访问的类中的私有方法。 在编译时,将 不 包含名为的方法。 ExampleExecutor 不是 我的课程。我无法以任何方式访问它

  • 是否可以接受全局并最终存储安全管理器的支票? 给出以下代码行: 将其放在库中并在JVM的整个生命周期中重用结果是否可以接受? 为什么?或者为什么不呢? [update]JavaEE-JSP规范的参考实现中也存在类似的代码。任何使用它的app server/servlet容器都不支持SecurityManager的动态配置。

  • 问题内容: 我想将所有内容都保留在virtualenv中。OpenCV有可能吗?我可以从头开始构建,我是否只需要先设置virtualenv,然后使用特殊的编译标志告诉它安装在哪里? 问题答案: 我发现解决方案是必须将cv2.so和cv.py复制到运行virtualenv的目录,然后pip install numpy。为此,我使用了Ubuntu12.04。

  • 我有什么想法可以解决这个问题吗?