2011-10-31 17 views
6

He estado buscando por bastante tiempo pero no puedo encontrar la respuesta. Preguntas similares se relacionan con algunos casos complicados con bibliotecas de terceros y todo, pero mi situación parece ser simple como un libro de texto. Sin embargo, no puedo entender cómo funciona esto.Importación desde otro proyecto en pydev

Estoy usando Eclipse 3.5.2, Pydev 2.2.0, ejecutándose en una máquina Ubuntu 11.04.

Mi caso parece simple: quiero escribir un paquete como su propio proyecto, y luego quiero escribir una aplicación usando este paquete en otro proyecto.

¿Cómo debo configuración pydev para que pueda tener estos dos proyectos "core" (el paquete) y "aplicación" (que utiliza el paquete básico), y desde dentro "aplicación" hacer:

import core 

?

  • He añadido core a las referencias del proyecto de la aplicación, pero no hace nada.
  • He añadido/core/a las carpetas de origen (tuve que forzar para eso porque no era que muestra en la lista), no funcionó (así que lo eliminé).
  • He añadido/full/path/to/core a las bibliotecas externas, todavía no funciona.

Por "does not work", quiero decir que obtengo una "importación no resuelta: core", siempre.

Ideas?

Respuesta

8

Siempre que tenga 2 proyectos con la PYTHONPATH configurada correctamente (a través de carpetas de origen), debería funcionar simplemente agregando una referencia de proyecto.

Tal vez un ejemplo puede ayudar ...

ej .:

project1 
project1/src <-- this should be set as the source folder 
project1/src/core 
project1/src/core/__init__.py 

project2 
project2/src <-- this should be set as the source folder 
project2/src/app 
project2/src/app/__init__.py 

y luego editar las propiedades Project2> referencias del proyecto y seleccione 'Project1' para poder acceder al proyecto 1 del proyecto 2.

+3

Gracias, lo tengo que trabajar ahora! 1) No necesito agregar nada del proyecto 1 en el pythonpath o las carpetas fuente del proyecto 2. 2) Nombrar el núcleo de mi proyecto no es suficiente, incluso si tiene un __init__.py: necesito un paquete apropiado "core". 3) Además, era necesario reiniciar el eclipse (archivo/reinicio). ¡Hurra! – Niriel

0

No funcioné al agregar una referencia de proyecto. Sin embargo, lo conseguí trabajando primero eliminando y luego agregando la naturaleza del proyecto pydev al proyecto, y luego, establecí la referencia del proyecto.

1

He estado en el mismo problema por un tiempo.
Ahora descubrí cómo puedo importar clases o funciones desde módulos y paquetes en otros proyectos.
Me encontré tonto de esto porque es siempre fácil.

Conclusión!
Todo lo que tiene que hacer es simplemente verificar el nombre del proyecto en 'Referencias del proyecto', Archivo/Propiedades/Referencias del proyecto.
En términos de uso de importación, hacer referencia a otro proyecto es lo mismo que poner todos los archivos o módulos en su directorio de proyecto actual. Estoy usando liclipse_1.0.0_win32.x86_64 en Windows 7.

Vamos a mostrar ejemplos.
Hay dos proyectos A y B y el proyecto A tiene el módulo a1.py y el paquete 'M'.
Está trabajando en el proyecto B y verifica el proyecto de referencia A en el siguiente árbol de proyectos.

|-- A 
| |-- M 
| | |-- __init__.py 
| | `-- m1.py 
| `-- a1.py 
`-- B 
    `-- b1.py 

# a1.py 
def say_a(): 
    print "I'm A" 

# m1.py 
def say_m(): 
    print "I'm M" 

Ahora puede acceder al proyecto A de la siguiente manera.

#b1.py 
import a1 
from M import m1 
a1.say_a() 
m1.say_m() 

De hecho, la declaración de importación de Python es un poco extraño para mí que puede encontrar otra manera de hacer lo mismo.
Además, si desea ejecutar b1.py desde la línea de comandos de Linux, vea esto.

~/tmp/pydemo/B $ PYTHONPATH = ../A pitón b1.py

+0

Esto funcionó para mí, gracias – Sergio

Cuestiones relacionadas