2011-01-07 28 views
94

Soy muy nuevo en PyDev y Python, aunque he usado mucho Eclipse para Java. Estoy tratando de trabajar en algunos de los ejemplos de Dive Into Python y esto se siente como un problema extremadamente trivial que se está volviendo extremadamente molesto. Estoy usando Ubuntu Linux 10.04.Problemas de importación no resueltos con PyDev y Eclipse

Quiero ser capaz de utilizar el odbchelper.py archivo, que se encuentra en el directorio /Desktop/Python_Tutorials/diveintopython/py

Aquí está mi archivo example.py que estoy trabajando en mi proyecto/Eclipse PyDev:

import sys 
sys.path.append("~/Desktop/Python_Tutorials/diveintopython/py") 

esto funciona bien, pero luego quiero que la siguiente línea de código para ser:

import odbchelper 

y esto provoca un error de importación sin resolver en todo momento. He agregado __init__.py archivos a casi todos los directorios posibles y no ayuda nada. Intenté agregar __init__.py archivos de uno en uno a los distintos niveles de directorios entre la ubicación del proyecto y el archivo odbchelper.py, y también intenté agregar los archivos __init__.py a todos los directorios simultáneamente. Ninguno de los dos funciona

Todo lo que quiero hacer es tener un proyecto en algún lugar de algún otro directorio, por ejemplo /Desktop/MyStuff/Project, en el que tengo example.py ... y luego desde example.py quiero importar odbchelper.py de /Desktop/Python_Tutorials/diveintopython/py/

Cada respuesta de la pizarra de mensajes Puedo encontrar diciendo que use la función sys.path.append() para agregar este directorio a mi ruta y luego importarlo ... pero eso es precisamente lo que estoy haciendo en mi código y no está funcionando.

También he probado el Ctrl - truco para suprimir el mensaje de error, pero el programa todavía no está funcionando correctamente. Me sale un error, ImportError: No module named odbchelper. Por lo tanto, es evidente que no se está agregando la ruta, o hay algún problema que haya perdido todas mis muchas permutaciones de agregar archivos __init__.py.

Es muy frustrante que algo tan simple ... llamar cosas desde algún archivo que existe en otro lugar en mi máquina ... requiere tanto esfuerzo.

+0

Asegúrese de que la caja (mayúsculas) es correcto para todos los directorios necesarios en su PYTHONPATH. –

+0

Sé que esto ya ha sido respondido, pero estaba obteniendo importación sin resolver para el módulo 'grp'. Acabo de agregarlo a la lista 'builtins' en Preferencias> PyDev> Intérpretes> Python> Builtins forzados y aún obtener autocompletado para ese módulo – user1040495

Respuesta

123

En las propiedades de su proyecto pydev, hay un panel llamado "PyDev - PYTHONPATH", con un subpanel llamado "Bibliotecas externas". Puede agregar carpetas de origen (cualquier carpeta que tenga un __init__.py) a la ruta usando ese panel. El código de su proyecto podrá importar módulos desde esas carpetas de origen.

+4

Si configura las propiedades de pydev correctamente, no necesita meterse con' sys.path' – Velociraptors

+6

Para otros buscadores, quería agregar mi experiencia: Windows 7, Python 2.7.1, Eclipse 3.6.2, PyDev, Pyschopg (para Python 2.7 amd64). La instalación de Psychopg fue para C: \ Python27 \ Lib \ site-packages \ psycopg2 (en la instalación de Python 2.7). Primero hice referencia a esa carpeta y a todas las carpetas secundarias con __init__.py, pero descubrí que también tenía que hacer referencia a la carpeta site_packages. (http://stackoverflow.com/questions/2983088/unresolved-import-models) (http://stackoverflow.com/questions/4631377/unresolved-import-issues-with-pydev-and-eclipse) – MaasSql

+80

Otro punto para tener en cuenta: puede ser necesario reiniciar Eclipse para que esto funcione. Esto solo parece funcionar a través de "Archivo -> Reiniciar" y no mediante el cierre y la reapertura manual. – soulBit

40

Acabo de actualizar un proyecto de WXWindows a Python 2.7 y no tuve problemas para que Pydev reconociera al nuevo intérprete. Hizo lo mismo que antes configurando el intérprete, hizo una nueva instalación de Eclipse y Pydev. Pensé que una parte de Python debía estar corrupta, así que volví a instalar todo. ¡Arghh! Cerré y volví a abrir el proyecto, y reinicié Eclipse entre todos estos cambios.

FINALMENTE se dio cuenta de que puede 'eliminar la configuración del proyecto PyDev' haciendo clic derecho en el proyecto. Luego se puede convertir en un proyecto PyDev nuevamente, ¡ahora es tan bueno como el oro!

+0

Esto funcionó perfectamente para mí. –

+1

no funcionó para mí – Lars

+0

¡Esto funcionó! Acaba de agregar Archivo-> Reiniciar: D –

14

He reparado mi ruta de acceso y todo fue excelente cuando importé cosas a través de la consola, pero todas estas importaciones no resueltas seguían marcadas como errores en mi código, sin importar cuántas veces reiniciara eclipse o actualicé/limpié el proyecto.

Hice clic derecho en el proyecto-> Pydev-> Eliminar los marcadores de error y se deshizo de ese problema. No se preocupe, si su código contiene errores reales, se volverán a marcar.

1

Hay dos formas de resolver este problema:

  • Eliminación del intérprete de Python de "intérpretes de Python" y agregarlo de nuevo.
  • O simplemente agregue la carpeta con las bibliotecas en el intérprete que está utilizando en su proyecto, en mi caso yo estaba usando "botella" y la carpeta que agregué fue "c: \ Python33 \ Lib \ site-packages \ bottle- 0.11.6-py3.3.egg "

Ahora ya no veo el error y la función de finalización de código funciona también con" botella ".

1

Estoy ejecutando Eclipse 4.2.0 (Juno) y PyDev 2.8.1, y me encontré con este problema con una lib instalada en mi ruta de site-packages. De acuerdo con esta cuestión de forma:

Pydev and *.pyc Files

... hay un problema con PyDev y archivos pyc. En el caso de la lib particular que traté de referencia, todo lo que se entrega son archivos pyc.

Aquí es lo que hice para hacer frente a esto:

  1. Instalar uncompyle2 de https://github.com/Mysterie/uncompyle2
  2. Run uncompyle2 contra los archivos .pyc * en los lib site-packages. Ejemplo:

    uncompyle2 -r -o/tmp/ruta/a/site-packages/lib

  3. Cambiar el nombre resultante * .pyc_dis archivos producidos a partir de uncompyle2 * .py
  4. Mover/copiar estos *. archivos Py el camino site-packages
  5. En Eclipse, seleccione archivo> Reiniciar

el error de importación sin resolver en relación con .pyc archivos ahora deben desaparecer.

7

proyecto -> propiedades -> pydev-pythonpath -> bibliotecas externas -> agregar carpeta de origen, agregue la CARPETA DE PADRES del proyecto. Luego reinicia eclipse.

+1

Bueno, este fue el problema que solucionó mi problema. –

+0

No es necesario reiniciar solo cierre y vuelva a abrir el archivo. ¡Me lo solucionó! – Jerther

4

Aquí es lo que funcionó para mí (sugested por soulBit):

1) Restart using restart from the file menu 
2) Once it started again, manually close and open it. 

Esta es la solución más sencilla que nunca y elimina por completo la cosa molesta.

0

siguiente, en mi opinión va a resolver el problema

  1. Adición de la init.py a su carpeta "~/Desktop/Python_Tutorials/diveintopython/py"
  2. Vaya a Ventana -> Preferencias -> PyDev -> Intérpretes -> Intérprete de Python para eliminar su configuración de Python Intérprete (la razón es porque PyDev no se puede actualizar automáticamente las actualizaciones realizadas en cualquier System PythonPath)
  3. Agregue el intérprete con los mismos detalles que antes (esto actualizará su configuración de Python Interpreter con las actualizaciones realizadas en su PythonPath)
  4. Finalmente, desde su "~/escritorio/Python_Tutorials/diveintopython/py "carpeta no es un PythonPath estándar, tendrá que agregarlo. Hay dos maneras de hacerlo:

a. Según lo que David German sugirió. Sin embargo, esto solo es aplicable para los proyectos particulares en los que se encuentre en b. Agregue "~/Desktop/Python_Tutorials/diveintopython/py" en un nuevo PythonPath en Ventana -> Preferencias -> PyDev -> Intérpretes -> Intérprete de Python -> Subficha Bibliotecas -> NewFolder

Esperanza ayuda.

31

Estoy usando eclipse kepler 4.3, PyDev 3.9.2 y en mi ubuntu 14.04 me encontré con el mismo problema. Intenté y pasé horas, con todas las opciones anteriores pero en vano. Luego probé la siguiente, que era estupenda: Proyecto

  • Seleccionar -> RightClick->PyDev ->Retire PyDev Proyecto Config
  • Archivo->reinicio

Y estaba usando Python 2.7 como intérprete, aunque no tiene efecto, creo.

+3

No es necesario reiniciar Eclipse, simplemente cierre y vuelva a abrir el archivo. También funcionó en Windows con Eclipse Luna, ¡gracias! –

+0

Esto funcionó para mí también. ¡Gracias! –

+0

Tuve que reiniciar Eclipse dos veces para que las advertencias desaparecieran. Gracias –

-1
KD.py 

class A: 
a=10; 

KD2.py 
from com.jbk.KD import A; 
class B: 
    b=120; 

aa=A(); 
print(aa.a) 

Esto funciona perfectamente para mí presentar

Otro ejemplo es

main.py 
======= 
from com.jbk.scenarios.objectcreation.settings import _init 
from com.jbk.scenarios.objectcreation.subfile import stuff 

_init(); 
stuff(); 

settings.py 
========== 
def _init(): 
print("kiran") 


subfile.py 
========== 
def stuff(): 
print("asasas")  
+0

Considere separar los nombres de los archivos y los códigos. Y también necesita corregir algunas sangrías. – dkato

Cuestiones relacionadas