2011-09-07 16 views
5

hace un par de meses que comencé el desarrollo en Python, con un C# y un fondo Java.Hace referencia a una biblioteca externa en un proyecto appengine de Python, usando Pydev/Eclipse

Actualmente estoy trabajando en 2 aplicaciones diferentes de python/appengine, y como suele ocurrir en esos casos, ambas aplicaciones comparten código común, por lo que me gustaría refactorizar y mover el código común/genérico a un lugar compartido.

En Java o C# solo crearía un nuevo proyecto de biblioteca, movería el código al nuevo proyecto y agregaría una referencia a la biblioteca de los proyectos principales.

Intenté lo mismo en Python, pero no puedo hacerlo funcionar.

Estoy usando Eclipse con el complemento Pydev.

He creado un nuevo proyecto PyDev, se trasladó el código, e intentaron:

  • referencia el proyecto de biblioteca de los proyectos principales (utilizando propiedades de proyecto -> Referencias Project)
  • añadir la biblioteca carpeta de carpeta src en los proyectos principales (en este caso tengo un error - supongo que no es posible dejar los límites del proyecto al agregar una carpeta fuente existente)
  • agregar como biblioteca externa (prácticamente lo mismo que se definen las bibliotecas de google) , usando Propiedades -> Bibliotecas externas)
  • Importar como enlace (de Importación -> Sistema de archivos y permite "Crear enlaces en espacio de trabajo")

En todos los casos soy capaz de hacer referencia al código de la biblioteca durante el desarrollo, pero cuando comienzo a la depuración, el desarrollo appengine servidor arroja una excepción porque no puede encontrar lo que he movido a un proyecto de biblioteca separado.

Por supuesto que he buscado una solución mucho, pero parece que nadie ha experimentado el mismo problema - o tal vez nadie no tiene que hacer lo mismo :)

La solución más cercano que he he podido encontrar es agregar una secuencia de comandos ant para comprimir los orígenes de la biblioteca y copiar en el proyecto de destino, pero de esta manera la depuración es un problema, ya que no puedo ingresar al código de la biblioteca.

¿Alguna sugerencia?

hace falta decir que la solución propuesta debe tener en cuenta que el código de la biblioteca tiene que ser incluido en el proceso de carga a AppEngine ...

Gracias

Respuesta

4

El dev_appserver y el entorno de producción no lo hacen tiene algún concepto de proyectos o bibliotecas, por lo que debe estructurar su aplicación para que todas las bibliotecas necesarias estén en la raíz de la aplicación. La forma más sencilla de hacerlo es, por lo general, vincularlos simbólicamente como subdirectorios o, en el peor de los casos, copiarlos (o, utilizando el control de versiones, convertirlos en sub-repositorios).

Cómo se mapean las operaciones en su IDE depende del IDE, pero en general, es más fácil obtener la aplicación estructurada como la necesita en el disco, y trabajar hacia atrás para configurar su IDE cómo lo desee eso.

+0

Gracias Nick: siguió sus consejos al mover el código a la carpeta src y luego agregarlo a un repositorio svn separado. Ahora solo tengo que importarlo al otro proyecto y debería estar bien. – Antonio

Cuestiones relacionadas