9

このような質問をするのはとても恥ずかしいですが、私はすでに数時間試しています...Pythonバージョンでランダムなことをすることができなくなったようです。より正確には、モジュールがありませんurandom

まず、私のシステムに関するいくつかの情報があります:

  • OSXバージョン:10.7.4
  • Pythonバージョン:Python 2.7.1
  • which python/opt/local/bin/python
  • import os; os<module 'os' from '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>
  • echo $PATH/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/git/bin
  • $ENV$PYTHONPATH空です

さて、私がより深く見て実行するとvim /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py、このファイルにはurandomが必要であることがわかります。

line 47: from os import urandom as _urandom

したがって、非常に論理的には、実行しようとすると失敗します。

>>> import random
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/random.py", line 47, in <module>
    from os import urandom as _urandom
ImportError: cannot import name urandom

何か案は?urandomはどこに住むことになっていますか?私はこれまで成功せずにぐるぐる回っていました。
多くのUbuntuユーザーがvirtualenvでこの問題を抱えているようですが、私はvirtualenvを使用しておらず、Ubuntuを使用していません。私の賭けは、どういうわけか私のPATHまたはPYTHONPATHまたはENV変数が適切に設定されていないということですが、これを解決する方法がわかりません。

4

1 に答える 1

16

わかりました、私はそれを理解しました。端末にダーティなハッシュ テーブルがありました。

解決:

hash -r  # will erase the currently used hash table

これが完了したら、もう一度 python を実行したところ、次の結果が得られました。

Python 2.7.3 (default, Apr 19 2012, 00:55:09) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import random
>>> import os; os
<module 'os' from '/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/os.pyc'>

Python のバージョンが異なることに注意してください (2.7.3 と 2.7.1 以前)。これは、以前に Mac ポート経由で python 2.3 をインストールしたことが原因だと思います。

質問/簡単な回答で申し訳ありません:/

良い夜を!
アルノー

于 2012-09-30T02:46:38.010 に答える