2011-01-21 18 views
7

Empecé a aprender Python. Escribí un programa muy simple.¿por qué este programa python no está funcionando?

#!/usr/bin/env python 
import random 
x = random.uniform(-1, 1) 
print str(x) 

Ejecuto esto desde el símbolo del sistema.

python random.py 

volvió con el error:

Traceback (most recent call last): 
    File "random.py", line 2, in <module> 
    import random 
    File "D:\python practise\random.py", line 3, in <module> 
    x = random.uniform(-1, 1) 
AttributeError: 'module' object has no attribute 'uniform' 

Es un programa muy simple, no puede entender lo que error que yo en esto. ¿Puede alguien ayudarme en esto? Gracias por adelantado. (sistema operativo: Windows 7; versión de Python: 2.7)

+6

3 votos en serio? – user225312

+1

En Windows, la sintaxis de shebang '#! Usr/bin/env python' no es necesaria; no hace absolutamente nada. Eso es para sistemas operativos de tipo Unix para que el shell pueda saber cómo ejecutar el script. –

+3

@Rafe, también no duele y ¿por qué suponer que siempre se ejecutará en un entorno que no sea de Unixy? –

Respuesta

24

No denomine su archivo random.py, se está importando y buscando uniform en él.

Es un poco extraño con la forma en que Python importa cosas, se ve primero en el directorio local y luego comienza a buscar en el PYTHONPATH. Básicamente, tenga cuidado al nombrar cualquiera de sus archivos .py de la misma manera que uno de los módulos de biblioteca estándar.

+0

Gracias, lo entendí. – narayanpatra

+1

si esa respuesta fue útil, márquela como aceptada. – anijhaw

2

Su problema es que llamó a su programa de prueba "random.py". El directorio de trabajo actual se encuentra en la ruta de búsqueda del módulo antes que nada, por lo que cuando dice "importar al azar", importa su propio programa de prueba en lugar de la biblioteca estándar al azar.

Cambie el nombre de su programa de prueba, o simplemente tome el sufijo .py, y debería funcionar.

4

No denomine su programa como una Biblioteca. Y solo como un consejo: no necesita un String para almacenar algo e imprimirlo justo después de generarlo.

#!/usr/bin/env python 
import random 
print(random.uniform(-1, 1)) 

Esto funciona muy bien también;)

1

La solución a su problema es cambiar el nombre de archivo (random.py) a algo distinto de Python muebles empotrados, librerías estándar, palabras clave reservadas etc.

Sin embargo

I Recomiendo encarecidamente que tome Python Tutorial, antes de intentar cualquier otro tutorial o libro. Especialmente necesita aprender más acerca de Python scopes and namespaces.

Cuestiones relacionadas