Вызывающий скрипт работает из терминала, но не из python subprocess.call - PullRequest
0 голосов
/ 31 октября 2019

Ниже мой код. Он работает при вызове в терминале, но не работает из скрипта python 2.7.

/usr/bin/python3.5 /var/www/html/web_map/simplemap/resources/py/align_raster.py
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-01_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-02_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-03_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-04_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-05_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-06_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-07_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-08_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-09_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-10_2013.tif,
/mnt/13aa104a-192c-43e5-95af-68aba6ac57a9/temp/85a0b2f9-c3fb-4913-9d70-a0c49f3649ba/chlor_a-modis-aqua-11_2013.tif
_aligned.tif

Это вывод в терминале.

Segmentation fault (core dumped)

Это автономный скрипт на QGIS python. Это всегда показывает эту ошибку, но файл обрабатывает все, что требуется.

Это не работает.

cmd = '/usr/bin/python3.5 /var/www/html/web_map/simplemap/resources/py/align_raster.py {} {}'.format(
    output_files_string, output_suffix
)
print(cmd)

result = call(cmd.split(), shell=False)

Я также пытался shell=True,

Это может быть вызванодампом кода, но есть ли способ обмануть python, чтобы файл был в порядке?

Редактировать : дамп кода исправлен с помощью этого решения.

Edit2: Я думаю, что эта проблема связана с Apache CGI Python. Как это не удается при запуске только из браузера.

1 Ответ

0 голосов
/ 31 октября 2019

Использование subprocess библиотеки

import subprocess

subprocess.Popen(cmd, shell=True)

Вы даже можете запретить вывод на консоль python, установив

import subprocess

subprocess.Popen(cmd,
                 shell=True,
                 stdout=subprocess.DEVNULL,
                 stderr=subprocess.STDOUT)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...