gpt4 book ai didi

python - 为什么 Flask 应用程序中的环境变量为空?

转载 作者:行者123 更新时间:2023-12-03 17:03:24 26 4
gpt4 key购买 nike

我有一个 flask 应用程序(my_app),它调用不同文件(my_function)中的函数:

my_app.py:

from my_functions import my_function
@app.route('/')
def index():
my_function()
return render_template('index.html')

my_functions.py:
def my_function():
try:
import my_lib
except:
print("my_lib not found in system!")
# do stuff...

if __name__ == "__main__":
my_function()

当我直接执行 my_functions.py(即 python my_functions.py)时,“my_lib”被导入而没有错误;但是,当我执行 flask 应用程序(即 python my_app.py)时,我收到“my_lib”的导入错误。

当我在每个文件的开头打印 LD_LIBRARY_PATH 变量时:
print(os.environ['LD_LIBRARY_PATH'])

我在调用 my_functions.py 时得到了正确的值,但在调用 my_app.py 时没有得到任何值(空)。尝试在 my_app.py 开头设置此值无效:
os.environ['LD_LIBRARY_PATH'] = '/usr/local/lib'

问题:

(1) 为什么在 Flask 应用程序中调用时 'LD_LIBRARY_PATH' 为空?

(2) 如何设置?

任何帮助表示赞赏。

最佳答案

LD_LIBRARY_PATH 在执行 flask 应用程序时被清除,可能是出于安全原因,正如 Mike 所建议的那样。

为了解决这个问题,我使用 subprocess 直接调用可执行文件:

import subprocess
call_str = "executable_name -arg1 arg1_value -arg2 arg2_value"
subprocess.call(call_str, shell=True, stderr=subprocess.STDOUT)

理想情况下,该程序应该能够使用 python 绑定(bind),但现在调用可执行文件有效。

关于python - 为什么 Flask 应用程序中的环境变量为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28712022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com