2016-08-03 8 views
-1

入門
私はクラスタ上でpythonスクリプトを実行しています。私はvirtualenvですべてを実行し、コードでは同じモジュール(SC_module.pyで書かれている)から2つの関数をインポートしています:同じモジュールから2つの関数をインポートすると、2つの関数のインポートがどのように機能しますか?

ex。 SC_module.py

私は次のインポート

from SC_module import funA,funB 

私はHPC上でコードを実行したとき、私はfunBが見つからないインポートエラーを取得していたスクリプトscript.pyで

def funA(): 

def funB(): 

。入力した場合

from SC_module import funA 

すべて正常です。 私はコマンドラインからpython3を実行し、

from SC_module import funA,funB 

すべての作品と楽しい(B)を実行する場合はインポートされます。

質問
フナ()とfunB(唯一の違い)は、2つの異なる日で符号化されていることです。
NB:新しい機能をモジュールに追加すると、プロセスの開始時にロードされませんが、端末を使用する場合はインポートされます。 クラスタ内のモジュールのロードに間違いがありますか?

おかげ

+0

クラスタは長時間実行されていますか?もしそうなら、モジュールを再インポートする必要があります。これは一種の痛みです。 –

+0

"funA()とfunB()の唯一の違いは、2つの異なる日にコード化されていることです。" < - それはあなたの答えのように聞こえる。サーバー上の 'SC_module'のバージョンには' funB'はありませんが、あなたのローカルコピーはそうです。 –

+0

@ Two-BitAlchemistエラーは、コードを完全に削除し、新しいバージョンをインストールして(楽しい)、すべてのプロセスを再起動したときにも発生します。 – s1mc0d3

答えて

0

削除ファイル:SC_module.pyc、そして再びそれを実行してみてください。

私はあなたが両方の環境では、インポートパスリストをプリントアウトし、彼らはあなたが彼らが考えるものと一致することを確認することを示唆している
+0

それをやってしまい、残念ながら助けにならない。 – s1mc0d3

0

>>> import sys 
>>> for d in sys.path: 
... print d 

プラス:

import SC_module 
print dir(SC_module) 

を機能が何であるかを見るためにインポートされたモジュールで
どこかに不一致があります。

関連する問題