Python脚本独立运行,但在使用flask应用程序调用时,会抛出权限错误

时间:2016-12-30 15:42:21

标签: python flask

我有一个在Ubuntu上运行的Flask应用程序,它调用一个单独的python脚本。在我的Flask App中,这就是调用脚本的原因:

args = ['python3', '/home/make_videos/code/master_script_slim.py', 'videos', '0,1', '01', '01']
output = subprocess.call(args)

当我运行它时,我在apache.log中收到此错误:

    Traceback (most recent call last):
  File "/home/make_videos/code/master_script_slim.py", line 90, in <module>
    make_dirs()
  File "/home/make_videos/code/master_script_slim.py", line 81, in make_dirs
    os.makedirs(sequence_creation_temp)
  File "/usr/lib/python3.5/os.py", line 231, in makedirs
    makedirs(head, mode, exist_ok)
  File "/usr/lib/python3.5/os.py", line 231, in makedirs
    makedirs(head, mode, exist_ok)
  File "/usr/lib/python3.5/os.py", line 241, in makedirs
    mkdir(name, mode)
PermissionError: [Errno 13] Permission denied: '/home/make_videos/ASV_Tests/01'

但是,当我在我的venv内外手动运行这个脚本(master_script_slim.py)时,我没有收到此错误。

显然,在创建一系列directorys时这是一个权限问题,但我无法弄清楚如何修复它。我尝试使用sys.executable来解决权限,但Flask应用程序是python2,我需要专门为此脚本调用python3。

以下是代码的makedirs部分:

sequence_creation_temp = working_root_path + '/' + artist_id + '/' + art_id + '/temp/'

thumbnails_final = working_root_path + '/' + artist_id + '/' + art_id + '/animated_thumbnails/'
thumbnails_image = working_root_path + '/' + artist_id + '/' + art_id + '/image_thumbnail/'
videos_final = working_root_path + '/' + artist_id + '/' + art_id + '/videos/'
scripts_final = working_root_path + '/' + artist_id + '/' + art_id + '/scripts/'

def make_dirs():
    if not os.path.exists(sequence_creation_temp):
        os.makedirs(sequence_creation_temp)
    if not os.path.exists(thumbnails_final):
        os.makedirs(thumbnails_final)
    if not os.path.exists(videos_final):
        os.makedirs(videos_final)
    if not os.path.exists(scripts_final):
        os.makedirs(scripts_final)
    if not os.path.exists(thumbnails_image):
        os.makedirs(thumbnails_image)
make_dirs()

1 个答案:

答案 0 :(得分:1)

furas提供了很好的信息。我更改了脚本,因此python正在创建烧瓶应用程序中的目录,一切都顺利完成。