1

私が Python 2.6 で作成したモジュール (test.py) は、次のコマンドを使用して Python IDLE からインポートして完全に実行できます。

import test
test.run_test_suite()

ただし、コマンドラインでコマンド「python test.py」を使用すると、コマンド「import os」で(トレースバックによると)明らかにクラッシュします。

以下のコードからわかるように、コマンド ラインから実行すると、IDLE 内で実行した場合と同じように実行されます。これを IDLE で実行すると問題が発生するのはなぜですか? 私の google-foo は、コードがコマンドラインで実行され、IDLE では実行されない場合にのみ結果を出すことができます。

if __name__ == "__main__":
    table = run_test_suite()
    print '---=== Results ===---'
    print_table(table)

このモジュールは、外部で計算されたデータが実行可能であることを確認するために大量の基本的な計算を行っているだけであることに注意してください。

完全なトレースバックは次のとおりです。

Traceback (most recent call last):
  File "...\Python\test.py", line 170, in <module>
    print '---=== Results ===---'
  File "...\Python\test.py", line 160, in build_data
    if Links == False:
  File "...\Python\test.py", line 103, in load_table
    if Abbrev[M.solution_type()] == 'pos':
  File "...\Python\test.py", line 85, in build_example
    import os
  File "SnapPy.pyx", line 173, in snappy.SnapPy.uFatalError (SnapPy.c:5507)
snappy.SnapPy.SnapPeaFatalError: 
SnapPea crashed in function cusp_modulus(), defined in cusp_modulus.c.
4

2 に答える 2

0

どちらの場合も同じバージョンの Python を使用していますか? コマンドラインから開始すると、パスの最初の Python が取得されますが、IDLE はおそらくショートカットから直接実行されます。
マシンに複数のバージョンの python がインストールされている場合、これは 2 つの完全に異なる環境に変換される可能性があります。

于 2010-09-24T19:58:33.900 に答える
0

現在の作業ディレクトリで os.py という名前のファイルを探します。ある場合は、名前を変更します。または、Python のドキュメントで「絶対インポート」を確認してください。

于 2010-09-25T14:46:11.887 に答える