2011-08-27 16 views
9

Estoy tratando de crear un script de python simple e importar un par de clases personalizadas. Me gustaría hacer esto como un solo módulo. Aquí es lo que tengo:Python crea/importa un módulo personalizado en el mismo directorio

punto/point.py

class Point: 
    """etc.""" 

punto/pointlist.py

class PointList: 
    """etc.""" 

punto/__ init__.py

from . import point, pointlist 

script.py

import sys, point 
verbose = False 
pointlist = PointList() 

Cuando corro script.py consigo NameError: name 'PointList' is not defined

Lo raro es que en el punto /, los tres de los archivos de módulo (__init__, PointList, punto) tienen una versión .pyc creada que no estaba allí antes, por lo que parece es encontrar los archivos. Los propios archivos de clase también compilan sin ningún error.

Siento que probablemente me esté perdiendo algo muy simple, así que por favor tengan paciencia conmigo.

+0

Python distingue entre mayúsculas y minúsculas: ¿se trata de un error ortográfico en su pregunta o del error real? –

+0

¿Dónde ves el error tipográfico? –

+0

Malo - no leí bien. –

Respuesta

12

Lo sentimos, parece que he metido la pata en mi respuesta anterior y comentarios:

El problema aquí es que usted debe tener acceso a los objetos en point a través del módulo de importar:

point/__init__.py:

from point import Point 
from pointlist import PointList 

script.py:

import sys, point 
verbose = False 
pointlist = point.PointList() 

Se accede a PointList través de la importación point el que las importaciones lo que está en __init__.py

Si desea acceder a PointList y Point directamente se podría utilizar from point import Point, PointList en script.py o al menos preferibles from point import *

Una vez más, lo siento por mi error anterior .

+0

Intenté renombrar 'point' (directorio) a' points' y cambiar el código del script a 'import sys, points' y tiene exactamente el mismo efecto (aún crea archivos .pyc para los tres archivos en puntos /) –

+0

Cuando cambiarlo a 'desde. import point, pointlist.PointList' Obtengo 'SyntaxError: sintaxis inválida' –

+0

Revisé mi respuesta, estaba apagado antes. – immortal

Cuestiones relacionadas