【问题标题】:Python3 root sudo venvPython3 根须藤 venv
【发布时间】:2017-03-08 14:26:11
【问题描述】:

我正在通过 SSH 在 Ubuntu 上运行 Python3.5,但出现了一些错误。我不明白为什么。如果我运行以下命令,我会收到相应的错误:

(venv) root@servername: python3 __init__.py

文件“__init__.py”,第 1 行,在 导入烧瓶中
ImportError: 没有名为“flask”的模块

如果我像这样使用 sudo 运行它,我会得到另一个错误:

(venv) root@servername: sudo python3 __init__.py

文件“__init__.py”,第 2 行,在 中从 .content_management 导入内容
SystemError:父模块''未加载,无法执行相对导入

如果我用 Firefox 运行它,因为它是一个 Flask 应用程序,该网站可以正常工作并且没有显示错误!这里发生了什么???我要疯了!

【问题讨论】:

    标签: linux virtualenv root sudo python-3.5


    【解决方案1】:

    似乎您没有在运行 python 脚本的机器上安装 Flask 模块。这会产生你得到的ImportError

    安装 Flask 模块,例如使用pip:

    $ pip install Flask
    

    完成后,Python 应该可以加载模块了。

    【讨论】:

    • 我一直以 root 身份运行,就像 root@servername:/# 一样,如果我使用 pip3 install Flask 安装它,如果我之后运行像 root@servername:/# python3 __init__.py 这样的脚本,第一个错误就会消失。但是如果我用 sudo root@servername:/# sudo python3 __init__.py 运行它,错误仍然存​​在。反之亦然,如果我使用 sudo 安装,如果我使用 sudo 运行它,错误就会消失,但如果我不运行它,它仍然存在。为什么我使用 sudo 安装或不安装会有区别,尤其是当我一直以 root 身份登录时
    • 如果您已经以 root 身份登录,为什么还要使用 'sudo' 命令? 'sudo' 命令允许用户以超级用户的安全权限运行程序,所以在你的情况下(因为你已经是超级用户)它没有意义。
    • 如果您已经以 root 身份登录,为什么还要使用sudo 命令? sudo 命令允许用户以超级用户的安全权限运行程序,所以在你的情况下(因为你已经是超级用户)它没有意义。 @saitam
    • 当我以root登录并额外使用sudo时,Linux是否使用不同的安装路径?
    • 不,事实并非如此。我不完全确定,但我的猜测是:如果您使用 sudo 已经是 root 安装软件,那么您将进一步限制允许谁运行它。两种情况下安装路径相同,但权限不同。无论如何,如果已经以 root 身份登录,请不要使用sudo。 @saitam
    猜你喜欢
    • 2019-01-24
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    相关资源
    最近更新 更多