【问题标题】:python: numpy runs script twicepython:numpy 运行脚本两次
【发布时间】:2015-02-20 10:57:37
【问题描述】:

当我将 numpy 导入我的 python 脚本时,该脚本会执行两次。 谁能告诉我如何阻止这种情况,因为我的脚本中的所有内容都需要两倍的时间?

这是一个例子:

#!/usr/bin/python2

from numpy import *

print 'test_start'

lines = open('test.file', 'r').readlines()
what=int(lines[0])+2
nsteps = len(lines)/what
atom_list=[]
for i in range(0,nsteps*what):
  atom_list.append(lines[i].split())

del atom_list[:]
print 'test_end'

输出是:

test_start
test_end
test_start
test_end

那么,我的脚本是先用普通 python 执行,然后再用 numpy 执行吗? 也许我应该说我还没有使用过 numpy,只是想开始并测试它。

干杯

【问题讨论】:

  • 您的工作目录是否命名为“numpy”?重命名它。而且,始终使用if __name__ == '__main__' 成语。
  • @shx2: 不是目录,而是exe文件:)重命名了,谢谢
  • 您可能还想避免使用from numpy import *,因为这会使用同名的 NumPy 函数覆盖常见的 Python 内置函数,如 sumanyall,导致(可能)令人惊讶的行为。
  • @shx2:那么使用'import numpy'会更好吗?您当然可以将其发布为答案

标签: python linux numpy


【解决方案1】:

您的脚本被命名为numpy.py,无意中导入了自己。由于导入时会执行模块级代码,因此导入行会导致它运行,然后一旦 imoprt 完成,它会再次运行其余部分。

An explanation关于为什么脚本可以自己导入)

建议:

  1. 将脚本重命名为 numpy.py 以外的名称
  2. 使用if __name__=='__main__' idiom(您应该始终在脚本中使用它)

除此之外,如前所述,强烈建议不要使用from numpy import *。使用import numpy 或普通的import numpy as np

【讨论】:

    猜你喜欢
    • 2013-11-14
    • 1970-01-01
    • 2015-11-07
    • 2020-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    相关资源
    最近更新 更多