1

OS モジュールを Brython にインポートしようとしていますが、何をしようとも、何をしようともできません。次のエラーが表示されます (Firefox コンソールで):

"TypeError: obj is undefined for module os" brython.js:6329:21
"message: undefined" brython.js:6330:1
"filename: http://localhost:8000/src/brython.js" brython.js:6331:1
"linenum: 4418" brython.js:6332:1
"Javascript error" TypeError: obj is undefined
Stack-Trace:
$B.get_class@http://localhost:8000/src/brython.js:4418:5
$test@http://localhost:8000/src/brython.js:8873:1
$SetDict.__le__@http://localhost:8000/src/brython.js:8830:50
getattr/method@http://localhost:8000/src/brython.js:5039:8
$module<@http://localhost:8000/src/brython.js line 6329 > eval:966:41
@http://localhost:8000/src/brython.js line 6329 > eval:1:14
run_py@http://localhost:8000/src/brython.js:6329:1
import_py@http://localhost:8000/src/brython.js:6310:8
import_from_stdlib_static@http://localhost:8000/src/brython.js:6378:22
$B.$import@http://localhost:8000/src/brython.js:6454:57
@http://localhost:8000/src/brython.js line 3931 > eval:11:1
brython@http://localhost:8000/src/brython.js:3931:7
onload@http://localhost:8000/boolean/boolean.html:1:1
 brython.js:3940:43
"Traceback (most recent call last):
RuntimeError: TypeError: obj is undefined"

私がこれを行うとき:

import os

def foo(ev):
    print(os.getcwd())

doc["submit"].bind('click', foo)

これは単なる例です。元のコードはもっと長かったです。最新の Brython バージョン (3.2.0) を使用しています。OS と関数のインポートは、提供されているコンソールの Brython ページで試してみると正常に動作します。お時間をいただきありがとうございます。

更新:現在は機能していますが、理由がわからず、理解できません-誰かが私が間違ったことを説明できれば、それは素晴らしいことです.将来同様の問題が発生した場合に備えて、OSの代替品を探しました(ディレクトリから .txt ファイルを読みたい - 「バニラ」Python で os を使用してこれを行う方法を知っており、glob を使用して解決策を見つけ、それをインポートしようとしました。Brythonにはglobが付属していないようなので、glob.pyをlibフォルダーに入れましたが、globがosをインポートすることも見たので、動作するかどうか疑問に思いました。次に、OS を再度インポートしようとしましたが、今では機能し、理由がわかりません。

from browser import document as doc, alert, html
from glob import glob
import os

# ... # 

def foo(ev):
    print(os.getcwd())

doc["submit"].bind("click", foo)

今すぐ動作します。よくわかりません。glob をインポートしてから os をインポートすると、なぜ機能するのですか?

4

1 に答える 1

0

あなたのコードサンプルdocでは定義されていません:

import os

def foo(ev):
    print(os.getcwd())

doc["submit"].bind('click', foo)

問題なくできimport osます。

于 2015-08-11T19:54:43.257 に答える