2011-01-21 16 views
7

私はPythonを学び始めました。私は非常に簡単なプログラムを書いた。なぜこのpythonプログラムが動作していないのですか?

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

コマンドプロンプトから実行します。

python random.py 

それはエラーで返さ:

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' 

をそれは非常に単純なプログラムです、私はこの中で何をしたかのミスを理解することはできません。誰でもこのことで私を助けることができますか?前もって感謝します。 (オペレーティングシステム:Windows 7; Pythonバージョン:2.7)

+6

3 votes seriously? – user225312

+1

Windowsでは、シバン構文 '#!usr/bin/env python'は必要ありません。それは絶対に何もしません。それはUnixのようなOSのためです。シェルはスクリプトの実行方法を知ることができます –

+3

@Rafeそれは傷つきませんし、なぜそれがいつもUnixy以外の環境で動くと仮定しますか? –

答えて

24

ファイル名をrandom.pyにしないでください。それ自体をインポートして、uniformを探しています。

Pythonが物をどのようにインポートするかはちょっと変わったところですが、ローカルディレクトリを最初に探してから、PYTHONPATHの検索を開始します。基本的には、.pyファイルのいずれかを標準ライブラリモジュールのいずれかと同じ名前にしてください。

+0

ありがとう、私は理解した。その答えが役に立ったら – narayanpatra

+1

を受け入れてください。 – anijhaw

2

あなたの問題は、あなたのテストプログラムに "random.py"という名前を付けたことです。現在の作業ディレクトリはモジュール検索パス上にあるので、 "import random"と言うと、ランダムな標準ライブラリではなく、独自のテストプログラムをインポートします。

テストプログラムの名前を変更するか、接尾辞.pyをオフにしてください。これが機能するはずです。

4

プログラムをライブラリとして指定しないでください。 ちょうどヒントとして:何かを格納し、それを生成した直後に文字列を出力する必要はありません。

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

これはあまりにも正常に動作します。)

1

あなたの問題を解決するには、Pythonの組み込み関数、標準ライブラリ以外に、あなたのファイル(random.py)の名前を変更され、予約語など

しかし、I他のチュートリアルやブックを試す前に、Python Tutorialとすることを強くお勧めします。特にPython scopes and namespacesについてもっと知る必要があります。

関連する問題