2016-09-01 17 views
2

私はお互いに必要な2つのモジュールをPythonからJavaScriptへコンパイルするためにTranscryptを使用しています。インポートでインポートをインポート

myTest.py:

import myTest2 
def test(): 
    myTest2.test() 
someConstant = 1 

とmyTest2.py:たとえば

import myTest 
def test(): 
    console.log(myTest.someConstant) 

JavaScriptにコンパイルし、myTest.test()を呼び出した後、私は例外RangeErrorを取得:最大コールスタックサイズを超えました。 どうすればこの問題を回避できますか? ありがとうございます。

答えて

4

は、コンパイル時ではなく実行時に解決されています。さらに、インポートの分解能は1回のパスで発生します。 1回のパスで分解能が発生するという事実は、相互(または周期的に)の輸入がサポートされないことを意味する。

もしあなたがお互いに何かを必要とする2つのモジュールを持っているなら、その何かをそれを考慮して、第3のモジュールに入れて、両方でインポートします。

コンパイル時に解決が行われるという事実は、実行時条件付きインポートでは 'if'を使用しても意味がないことを意味します。条件付きインポートでは、作業コンパイル時に__pragma__( 'ifdef'、...)を使用します。あなたの答えのための

http://www.transcrypt.org/docs/html/special_facilities.html#transcrypt-s-module-mechanism

+0

ありがとう:このような

制限事項で説明されています。 Transcryptをそのままの形にしてくれてありがとう。私は本当にそれが好き。 –

0

myTestから必要なときにインポートしてください。コンパイラが生成されたJavaScriptに含めるどのモジュール知らなければならないので、Transcryptの輸入でmytest2.py

def test(): 
    from myTest import someConstant 
    console.log(someConstant) 
関連する問題