Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从需要SUDO执行的python文件导入mongoengine_Python_Flask_Mongoengine - Fatal编程技术网

无法从需要SUDO执行的python文件导入mongoengine

无法从需要SUDO执行的python文件导入mongoengine,python,flask,mongoengine,Python,Flask,Mongoengine,我想在python文件中导入mongoengine,该文件需要执行sudo,但我得到以下错误modulenofounderror:没有名为“mongoengine”的模块。我尝试了以下方法: 1/在终端中,我打开了python shell并编写了pip show mongoengine,它可以检测版本和位置,这意味着库安装正确。 2/我已尝试通过删除sudo必需部分来运行代码,然后代码也已执行。 这说明使用sudo python3 pyfile_name.py会导致问题。 我在高射炮环境中使用它

我想在python文件中导入
mongoengine
,该文件需要执行
sudo
,但我得到以下错误
modulenofounderror:没有名为“mongoengine”的模块
。我尝试了以下方法:
1/在终端中,我打开了python shell并编写了
pip show mongoengine
,它可以检测版本和位置,这意味着库安装正确。
2/我已尝试通过删除
sudo必需部分来运行代码
,然后代码也已执行。
这说明使用
sudo python3 pyfile_name.py
会导致问题。
我在高射炮环境中使用它。下面我给出了示例代码

mongo_data.py


from mongoengine import *
from random import random, randint

connect(
    db='db_name',
    host='localhost',
    port=27017
)

class Mongo_User(Document):
    user_id = SequenceField(primary_key=True)
    json_data = DictField()
    meta = {'collection': "col_name"}

from flask import Flask, render_template, request, Response
from flask import jsonify
from mongo_data import *

app = Flask(__name__)
app.static_folder = os.path.abspath("templates/static/")

@app.route('/get_json_for_form')
def parse_get_json_for_form(name=None):
    user = Mongo_User()
    json_data = {"name":"xyz"} # sample data
    user.json_data = json_data
    user.save()
    return jsonify(json_data)

app.py


from mongoengine import *
from random import random, randint

connect(
    db='db_name',
    host='localhost',
    port=27017
)

class Mongo_User(Document):
    user_id = SequenceField(primary_key=True)
    json_data = DictField()
    meta = {'collection': "col_name"}

from flask import Flask, render_template, request, Response
from flask import jsonify
from mongo_data import *

app = Flask(__name__)
app.static_folder = os.path.abspath("templates/static/")

@app.route('/get_json_for_form')
def parse_get_json_for_form(name=None):
    user = Mongo_User()
    json_data = {"name":"xyz"} # sample data
    user.json_data = json_data
    user.save()
    return jsonify(json_data)


在我的例子中,
app.py
必须与
sudo python3 app.py
一起运行,我想这就是问题的根源。任何克服这个问题的想法都是非常值得赞赏的。

通过以下方式得到了答案。刚用过

sudo -E python3 app.py
另一种方法也找到了,但不要认为是推荐的方法

sudo python3 -m pip install mongoengine

我会问自己:为什么脚本需要作为超级用户运行?特别是如果它是一个web服务器。它现在在Xilinx FPGARE上运行,处于研发阶段。你真的在Xilinx FPGA上运行Python上的Flask web服务器吗?对不起,混合了设备。Flask运行在ARM处理器上,使用xilinx FPGA字处理数据。错误地使用了这个术语。您仍然不需要以root身份运行Python。只要确保代表Xilinx的任何设备文件都能被普通用户读取。。。