2011-06-25 12 views
2

最近私はPyMCを試しています。とても簡単なmcmceasy.pyを書いています。私は直接のPythonを使用するときに興味深いことに、スクリプトはIPythonでOK走る、しかし、それは以下のトレースバックを与える:バニラPythonシェルでこの問題を解決する方法1.:IPythonとPythonの違いは?

Traceback (most recent call last): 
    File "mcmceasy.py", line 2, in <module> 
    from pymc import MvNormal, MCMC 
    File "/usr/lib/python2.7/site-packages/pymc/__init__.py", line 55, in <module> 
    import ScipyDistributions 
    File "/usr/lib/python2.7/site-packages/pymc/ScipyDistributions.py", line 1, in <module> 
    import scipy.stats.distributions as sc_dst 
    File "/usr/lib/python2.7/site-packages/scipy/stats/__init__.py", line 12, in <module> 
    import mstats 
    File "/usr/lib/python2.7/site-packages/scipy/stats/mstats.py", line 3, in <module> 
    from mstats_basic import * 
    File "/usr/lib/python2.7/site-packages/scipy/stats/mstats_basic.py", line 52, in <module> 
    import scipy.misc as misc 
    File "/usr/lib/python2.7/site-packages/scipy/misc/__init__.py", line 20, in <module> 
    __all__ += common.__all__ 
NameError: name 'common' is not defined 

私の質問は2つの部分を持っていますか? 2. IPythonをこのエラーから解放するには?

答えて

2

もちろん私はあなたのスクリプトを持っていませんが、Windows、Linux、OSXバージョンの2.6と2.7のpythonをIPythonとPythonで正常に実行できました。報告する際にエラーはありません。

しかし、「scipy/misc/init .py」を見ると、一般的な名前はインポートされません。

from common import * 
#...more stuff 
__all__ += common.__all__ 

コードが機能するという事実は、コモンが他の場所でインポートされるということです。 scipy.__init__.pyの中でPackageLoaderはnumpyからインポートされ、コールスタックなどのフレームのパスをチェックして恐ろしい魔法を実行します。

特に、pylabフラグを使用している場合、IPythonはPythonとは異なるインポートを行います。それはipythonとpythonを異なるものにするでしょう。私は別に上記の輸入を試みることをお勧めします。 PyMCの前にインポートを呼び出すと、回避策になる可能性があります

それ以外の場合は、packageLoaderが呼び出されているバージョンのnumpyをポストする必要があります。

0

私はpymcを使ったことがありませんでしたが、まずipythonとシステムのpythonが同じ環境を使用していることを確認してください。しかし、私はpymcが特定のipython並列コンピューティング機能を利用するscipy機能を使用していると思われます。その場合、n.1の部分は非常に難しいでしょう。

+0

同じ環境を使用しているかどうかを確認するにはどうすればよいですか? IPythonやPythonで特別な設定をしたことはありません。 –

+0

開始は 'sys.path'を比較しているかもしれません –

関連する問題