[pyar] Correr un script de python dentro de un programa en C

Angel Java Lopez ajlopez2000 en gmail.com
Jue Feb 6 09:04:24 ART 2014


Bien, recien probe:

Windows Server 2008
32 bits
Python 2.7 en el path
Me baje el numpy de
http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy
corri el instalador

Mi programa python mypython.py

import numpy
print "hello, world"


Mi programa myc.c

#include <stdlib.h>
#include <stdio.h>

int main(){
    char py_cmd[200];

    sprintf(py_cmd, "python mypython.py");
    system(py_cmd);

}

Mi programa python funciona con

python mypython.py

Agrege el DevKit para compilar

gcc myc.c

ejecuto a.exe y anda joya

Tenes info de:

- Que PATH estas usando?
- Como compilas el programa c?
- Que pasa si llamas a un programa python que muestre el sys.path,
diferencias entre llamarlo a mano, y desde c?
- Tu python realmente esta en /usr/lib/python27 o el cargador de numpy se
confundio y detecto que cree estar en un linux o similar?

Nos leemos!

Angel "Java" Lopez
@ajlopez





2014-02-05 9:35 GMT-03:00 Emanuel Benatti <emanuel.benatti en gmail.com>:

> Hola a todos,
>
> estoy tratando de correr un script hecho en python dentro del código de un
> programa hecho en C. Me pareció que lo mas sencillo era utilizar la función
> system de C, asi que después de un par de intentos di con lo que parecía
> ser la fórmula correcta. Sin embargo, cuando quiero correr un script que
> requiere importar numpy obtengo el siguiente mensaje de error:
>
> Traceback (most recent call last):
>   File "pyemb.py", line 1, in <module>
>     import numpy
>   File "/usr/lib/python2.7/site-packages/numpy/__init__.py", line 137, in
> <module>
>     import add_newdocs
>   File "/usr/lib/python2.7/site-packages/numpy/add_newdocs.py", line 9, in
> <module>
>     from numpy.lib import add_newdoc
>   File "/usr/lib/python2.7/site-packages/numpy/lib/__init__.py", line 13,
> in <module>
>     from polynomial import *
>   File "/usr/lib/python2.7/site-packages/numpy/lib/polynomial.py", line
> 17, in <module>
>     from numpy.linalg import eigvals, lstsq
>   File "/usr/lib/python2.7/site-packages/numpy/linalg/__init__.py", line
> 48, in <module>
>     from linalg import *
>   File "/usr/lib/python2.7/site-packages/numpy/linalg/linalg.py", line 23,
> in <module>
>     from numpy.linalg import lapack_lite
> ImportError: No such file or directory
>
> Esto es lo que pongo en el codigo en c:
> #include <stdlib.h>
> #include <stdio.h>
>
> int main(){
>     char py_cmd[200];
>
>     sprintf(py_cmd, "python pyemb.py");
>     system(py_cmd);
>
> }
>
> siendo pyemb.py:
> import numpy
> print "all fine with the world"
>
>
> Lo mas extraño de todo es que si en la linea de comandos corro el comando:
> python pyemb.py
>
> todo resulta como debe ser.
>
> Estoy realmente perdido en esto. ¿Qué diferencia puede haber en correr el
> comando usando system que haciéndolo directamente?
>
> Probé tambien importar otros módulos, como subprocess, math, y sys y no
> tuve ningún problema.
>
> Estoy usando python 2.7 en windows XP.
>
> En la computadora también hay instalado un python 2.5, aunque cuando
> escribo "python" en la línea de comandos el intérprete que me sale es el de
> la versión 2.7, así que no creo que el problema pase por ahí. ¿Estoy en lo
> correcto?
>
> Muchas gracias
> --
> Emanuel
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20140206/07af97ef/attachment.html>


More information about the pyar mailing list