Invoca o script python por meio do comando make

2

Eu tenho uma ferramenta com 5 scripts python dizendo A.py , B.py , C.py , D.py e E.py . Eu tenho que executar este programa no Linux. A.py é o programa que eu executo, que importa outros arquivos e os usa. Para executar A.py, eu uso o comando

$ python A.py

Até agora, os caminhos de entrada e saída são codificados em A.py. Agora devo escrever um makefile com toda a estrutura e dependências do arquivo. Este makefile também deve incluir o comando para executar o python scrip A.py. Os caminhos de entrada e saída necessários devem ser entendidos quando o comando make makefile é chamado e a ferramenta deve começar a ser executada. Como fazer isso?

EDITADO:

O makefile deve ser algo como isso, mantendo todos esses detalhes.

INPUT_PATH = list of all input paths
FILES = list of .c files located in the above specified paths
OUTPUT_PATH = output path where generated file has to be stored
command to execute python scrip:
   A.py inputpath+filename outputpath

assim, sempre que houver novos arquivos de entrada .c, eles serão adicionados à lista no makefile. Qualquer amostra deste tipo que você possa sugerir?

    
por AnushaReddy 12.06.2015 / 06:26

2 respostas

3

Em python, você obtém os parâmetros de linha de comando de sys.argv so em vez de

#!/usr/bin/env python
base_dir = /hard/coded/path

você faz:

#!/usr/bin/env python
import sys
base_dir = sys.argv[1]

(colocar em cheques pode ser apropriado). Se você iniciar explicitamente o programa com python, você pode deixar de fora a primeira linha, mas não vai doer estar lá, caso você execute A.py executável, você precisará dele.

No seu makefile agora você pode especificar:

default:
        python A.py /hard/coded/path

(verifique se você tem uma aba antes de python , não 8 espaços.

E, em seguida, você pode executar make (não é necessário fazer make makefile , a menos que tenha um Makefile ou com o Gnu um GNUmakefile no mesmo diretório)

    
por 12.06.2015 / 06:35
2

Sugiro strongmente que você leia um tutorial básico do Makefile .

O que você quer basicamente é colocar seus caminhos em macros, que nessas instâncias funcionam de maneira semelhante às variáveis.

por exemplo DIR=/your/path .

Lembre-se de que as diretivas são assim:

directive:
        command

se a sua diretiva for denominada default ou all , ela será executada sem chamar explicitamente a diretiva da linha de comando. Então você não precisa invocar com make directive , apenas make .

Agora, o espaço na frente do comando deve ser um caractere de tabulação. Eu também aconselho nomear seu makefile Makefile (capital 'M'), então você pode invocá-lo, apenas digitando make .

agora, seu script deve ser capaz de receber um argumento de linha de comando (neste caso, os diretórios), e você invocaria algo como:

        python A.py $(DIR)

Com DIR sendo sua macro com o nome de diretório adequado.

Além disso, aconselho a ler os bits relevantes do manual do GNU Make

Existe, claro, um pouco mais para Makefiles do que o descrito neste escopo. Uma vez que os makefiles são uma parte integral do desenvolvimento no Linux, eu aconselho a se familiarizar com o básico, pelo menos!

    
por 12.06.2015 / 06:42

Tags

yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20190902/memcached.so (/usr/lib/php/20190902/memcached.so: undefined symbol: igbinary_serialize), /usr/lib/php/20190902/memcached.so.so (/usr/lib/php/20190902/memcached.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'id' => '818366',
    'url' => 'invoke-python-script-through-make-command',
];

$_COOKIE = [
    'advanced-frontend' => 'b85aj11q27lgq1gsic7sg786u9',
    '_csrf-frontend' => '5b0923e8143a6567730bf8adb9de7e156ad9ffc566924c5f5908f24c5c3be993a:2:{i:0;s:14:"_csrf-frontend";i:1;s:32:"tEqXwAj1dob756a27d2JyL4pIMcG79zw";}',
];

$_SESSION = [
    '__flash' => [],
];