2017-02-01 15 views
0

私はで働いています一つに、別のファイルに定義された関数をインポートしようよ「moduleXには、属性Yを持っていない」は:はImportError

私はインポートしようとしている機能。そしてParallelEqns.pyというファイルに次のようになります。

import sys 
import numpy as np 
import scipy as sp 
import sympy as sym 
import matplotlib.pyplot as plt 
import os 

def ParDeriv(x,p): 
    derivative = [] 
    for k in range(nS): 
     test = x[(k-1)%nS]*(x[(k+1)%nS] - x[(k-2)%nS]) - x[(k)%nS] + p 
     if k == 0: 
      derivative = test 
     else: 
      derivative = np.vstack([derivative, test]) 
    return derivative 

私がどのように見えるで働いているファイル:私は「『ParDeriv』名前をインポートすることはできません」の誤差を与える

import sys 
import numpy as np 
import scipy as sp 
import sympy as sym 
import matplotlib.pyplot as plt 
import os 

from ParallelEqns import ParDeriv 

私は、ファイルを変更した場合:

import sys 
import numpy as np 
import scipy as sp 
import sympy as sym 
import matplotlib.pyplot as plt 
import os 

import ParallelEqns 

ParDeriv = ParallelEqns.ParDeriv 

私は

「モジュール 『ParallelEqnsが』いいえ属性 『ParDeriv』を持っていない」私は両方のファイルがであることを確認しましたというエラーを取得します同じディレクトリ。私はここで間違っているのか分かりません

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%% 編集:私は自分の質問に答え、すべてを閉じて、Pythonを再起動しました。正しくインポートするためにParallelEqns.pyファイルを作成した後にPythonを再起動する必要があるようです。

+0

これは、元のインポートエラーのようなものです。あなたは 'ParallelEqns'をインポートしようとしているファイルを何と呼びましたか? 'numpy.py'のように、使用しようとしている他のモジュールの1つと同じものを呼び出しましたか?エラーの完全なスタックトレースを表示します。 – user2357112

+0

ParallelEqnsをインポートしようとしているファイルは "MaskedVegas.py"と呼ばれています 私はそれを理解したようです。ただPythonを再起動する必要があります – sasha

+0

インポートされたすべてのライブラリがインストールされている場合は、作業ディレクトリ内に '__init __。py'を追加する必要があると思います。 – Ralph

答えて

0

Pythonを起動した後にインポートしようとしていたファイルを作成したので、一度やったことがうまくいった