我有一个在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()
答案 0 :(得分:1)
furas提供了很好的信息。我更改了脚本,因此python正在创建烧瓶应用程序中的目录,一切都顺利完成。