2015-02-11 6 views
0

Я выполняю скрипт python с несколькими параметрами командной строки, но используя сценарий оболочки.Преобразование команды сценария оболочки в командную строку

команды я выполнить для выполнения сценария оболочки:

./scripts/run_qa.sh data/questions/questions.txt data/lexicons/paralex data/weights/paralex.txt data/database > output.txt 

run_qa.sh файлы выглядит, как показано ниже (пожалуйста, объясните, как это работает):

#!/bin/bash 
set -u 
set -e 
if [ $# != 4 ]; then 
    echo "Usage: run.sh questions lexicon weights db" 
    exit 1 
fi 
questions=$1 
lexicon=$2 
weights=$3 
db=$4 
PYTHONPATH=$PWD/python python -m lex.gearman_worker $lexicon $weights $db < $questions 

Я попытался выполнить команду питона, как показано ниже в командной строке:

python -m python/lex/gearman_worker.py data/lexicons/paralex data/weights/paralex.txt data/database > output.txt 

whic ч дает ошибку:

/usr/bin/python: Import by filename is not supported. 

Update1:

gearman_worker.py импорта файла другие файлы, такие как: тыс

import lex.parse 
import lex.semantics 
from collections import namedtuple 
from collections import defaultdict 

импорт линия дает ошибку, как это:

ImportError: No module named lex.lexicon 

Update2 (выполненный на терминале linux):

export PYTHONPATH=$/mnt/paralex-evaluation-gearman/python 
PYTHONPATH = ./python python -m python/lex/gearman_worker data/lexicons/paralex data/weights/paralex.txt data/database > output.txt 

дает:

PYTHONPATH: command not found 

Тогда

python -m python/lex/gearman_worker data/lexicons/paralex data/weights/paralex.txt data/database > output.txt 

дает:

File "/mnt/paralex-evaluation-gearman/python/lex/gearman_worker.py", line 3, in <module> 
    import lex.lexicon 
ImportError: No module named lex.lexicon 
+0

@mu 無: извините, обновил – nlper

ответ

0

Вам просто нужно выполнить следующую команду:

PYTHONPATH=./python python -m lex.gearman_worker ARGUMENT_2 ARGUMENT_3 ARGUMENT_4 < ARGUMENT_1 

Если это не сработает, то вы, возможно, придется экспортировать PYTHONPATH настройки:

export PYTHONPATH=${PWD}/python 
python -m lex.gearman_worker ARGUMENT_2 ARGUMENT_3 ARGUMENT_4 < ARGUMENT_1 

оригинальные аргументы, которые вы передаете в сценарий, перечислены в ARGUMENT_N.

Сценарий просто:

  • устанавливает некоторые целесообразные настройки по умолчанию (см the documentation for set)
  • тестирует правильное число аргументов было поставлено
  • вызывает команду выше

Попытка для его использования:

  • пропускает установку PYTHONPATH, которая присутствует в сценарии
  • проходит модуль gearman_worker в виде файла, а не импорт модуля питона
+0

вы можете, пожалуйста, проверьте обновленный вопрос – nlper

+0

Done что. Вы были близки. –

+0

Я не хочу использовать сценарий оболочки, я хочу выполнить команду непосредственно с терминала. Я не мог этого сделать, не могли бы вы помочь? – nlper

Смежные вопросы