2011-08-27 12 views
9

Sto provando a creare un semplice script python e importare un paio di classi personalizzate. Mi piacerebbe farlo come un modulo. Ecco quello che ho:Python crea/importa modulo personalizzato nella stessa directory

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() 

Quando eseguo script.py ottengo NameError: name 'PointList' is not defined

Cosa c'è di strano è che in punto /, tutte e tre le file dei moduli (__init__, pointlist, punto) hanno una versione .pyc creato, che prima non c'era, così sembra sta trovando i file. Anche i file di classe si compilano senza errori.

Mi sento come se mi mancasse qualcosa di molto semplice, quindi per favore portami con me.

+0

Python fa distinzione tra maiuscole e minuscole - si tratta di un errore di battitura nella domanda o dell'errore effettivo? –

+0

Dove vedi l'errore? –

+0

Il mio male: non ho letto bene. –

risposta

12

dispiace, mi sembra di aver fatto un errore nel mio precedente risposta e commenti:

Il problema qui è che si dovrebbe accedere agli oggetti nel point attraverso il modulo di importare:

point/__init__.py:

from point import Point 
from pointlist import PointList 

script.py:

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

Si accede PointList attraverso l'importazione point quali le importazioni tutto ciò che è in __init__.py

Se si desidera accedere PointList e Point direttamente è possibile utilizzare from point import Point, PointList nel script.py o almeno preferibile from point import *

Anche in questo caso, mi spiace per il mio errore in precedenza .

+0

Ho provato a rinominare 'point' (directory) in' points' e cambiare il codice di script in 'import sys, points' e ha esattamente lo stesso effetto (crea ancora file .pyc per tutti e tre i file in punti /) –

+0

Quando I cambiarlo in 'da. punto di importazione, pointlist.PointList' Prendo 'SyntaxError: invalid syntax' –

+0

Ho rivisto la mia risposta, ero fuori prima. – immortal

Problemi correlati