2012-05-29 14 views
6

No sé si pycharm tiene algo que ver con el problema, o si soy yo novato.problemas para importar módulos de python de otros paquetes (pycharm da una referencia no resuelta)

Aquí es una captura de pantalla de mi diseño de carpeta y tres archivos de código:

screenshot

estoy usando PyCharm en las ventanas y "my_working_directory" es mi directorio de trabajo. Puede ver en la captura de pantalla que en mod1.py "from package2.mod2" está subrayado, lo que significa "referencia no resuelta".

Cuando intento ejecutar mod1.py me sale:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py 
Traceback (most recent call last): 
    File "C:/Users/Robert/PycharmProjects/play/my_working_directory/package1/mod1.py", line 1, in <module> 
    from package2.mod2 import SomeClass 
ImportError: No module named package2.mod2 

Cuando corro main.py me sale:

C:\Python27\python.exe C:/Users/Robert/PycharmProjects/play/my_working_directory/main.py 
hi 

No entiendo por qué se trabaja y no a la inversa .

El principal problema es que pycharm no me da autocompletado y desde mod1 no puede detectar el paquete2. Este es un gran problema porque package1 es mi paquete de vista, package2 es mi paquete de modelos o utils o lib (en un controlador de vista de modelo grande). (ejemplo https://github.com/coto/gae-boilerplate/blob/master/web/handlers.py pycharm no detecta ninguno de los enunciados lib)? import? (dando referencia sin resolver)

¿Alguien sabe qué está pasando? ¿Es esta la mejor forma de importar paquetes? ¿Debo esperar poder tener autocompletar

debería "my_working_directory" puede hacer en un paquete de la presentación de otra init archivo .py

+1

Creo que necesita agregarlo a su camino de pitón. puede ver el paquete1 desde main, pero al importar mod1 está en mod1, no puede ver el paquete2 desde la importación porque está en la carpeta principal, no en el paquete1. – GP89

+1

@ GP89 "agrégalo a tu ruta python", ¿qué es "eso"? C: \ Users \ Robert \ PycharmProjects \ play \ my_working_directory \? ¿También debería ser el trabajo de mi IDE agregar esto para mí? o para todos mis proyectos debería estar jugando con mi configuración de ruta de Windows en compter> propiedades> configuración avanzada> variables de entorno –

+4

Ah, encontré en pycharm> configuración> estructura del proyecto, tuve que cambiar la raíz del proyecto desde/play to/play /directorio de trabajo !!! Gracias por ayudarme a resolver esto. –

Respuesta

2

podría ser que C:??/Usuarios/Robert/PycharmProjects/reproducción no se encuentra en su %PYTHON_PATH%

+0

Hola Jakob, creo que podrías estar metido en algo. Añadí print sys.path a mod1.py y main.py. Luego ejecuté mod1.py y grabé la ruta. Luego ejecuté main.py y grabé la ruta. La diferencia de los dos conjuntos de rutas es: set (['C: \\ Users \\ Robert \\ PycharmProjects \\ play \\ my_working_directory \\ package1']) set (['C: \\ Users \\ Robert \ \ PycharmProjects \\ \\ juegan my_working_directory ']) –

+0

en mod1 consigo rutaDeAcceso1 = sys.path para i en rutaDeAcceso1: si "juego" en i: i impresión C: \ Users \ Robert \ PycharmProjects \ juego \ my_working_directory \ package1 C: \ Users \ Robert \ PycharmProjects \ play –

+0

en main.py me sale: para i en via2: si "juego" en i: impresión i C: \ Users \ Robert \ PycharmProjects \ juego \ my_working_directory C: \ Users \ Robert \ PycharmProjects \ juegan –

Cuestiones relacionadas