我在Python 2.6中编写的模块(test.py)可以使用以下命令从Python IDLE导入并运行得非常好:
import test
test.run_test_suite()
但是如果我在命令行中使用命令“python test.py”,它会在命令“import os”上明显崩溃(根据traceback)。
从下面的代码中可以看出,从命令行运行时,它应该与在IDLE中运行时相同。为什么不在IDLE中运行它会导致问题?当代码在命令行运行但不在IDLE中时,我的google-foo只能获得结果。
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.
答案 0 :(得分:0)
你在两种情况下都使用相同的python版本吗?从命令行开始时,您将获得路径中的第一个Python,而IDLE很可能直接从快捷方式执行 如果您的计算机上安装了多个版本的python,则可以在两个完全不同的环境中进行转换。
答案 1 :(得分:0)
在当前工作目录中查找名为os.py的文件。如果您有,请重命名。或者查看Python文档中的“绝对导入”。