如何将Python脚本发送到IPython或在IPython中运行Python脚本而不导入numpy?

3

我有一个包含使用numpy函数的Python文件。

我认为IPython已经加载了numpy,所以在文件中没有导入numpy,当我执行以下操作时:

%run my_python_file.py 

由于缺少 numpy 中的未知函数,它失败了。

所以,我的问题是:

有没有一种方法可以在已经由 IPython 导入模块的情况下运行 Python 文件中的脚本?

非常感谢!

3个回答

5
如果您正在使用 numpy-pylab 交互式 shell,请使用以下命令:
run -i script.py

针对您的问题,使用此方法会有一个副作用,即保留(或覆盖)在您的Python脚本中的任何全局变量。基本上,IPython就像您手动输入文件一样。

也许最有用的原因是您可以引用IPython会话中创建的其他变量,例如,在运行脚本之间手动更改它们。

举个简单的例子,如果script.py是这样的:

AA = np.array([[1,2],[3, myVar]])
print AA

然后在IPython中,您可以执行以下操作:

In [1]: myVar = 7
In [2]: run -i script.py
[[1 2]
 [3 7]]
In [3]: myVar = 17
In [4]: run -i script.py
[[ 1  2]
 [ 3 17]]
In [5]: 

1

好的,如果我理解你的意思正确的话,假设你正在运行Linux,你可以像这样做:

#!/usr/bin/ipython --pylab=tk
print(numpy.sin(0.5))

带有#!的行告诉脚本要使用哪个程序(和选项)来运行它,numpy行只是一个示例,用于展示它的工作原理。您可能需要将tk替换为Qt4或类似的内容。

然后,您将需要在此文件上运行chmod + x命令(假设您在unix机器上),以使其可执行并运行。

真正的问题是,为什么不在您的脚本中导入numpy?如果您解释一下,也许我们可以帮助您找到解决问题的最佳方法。


或者您可以在 my_script.py 中编写脚本,运行 ipython --pylab=tk,然后输入 from my_script import * - behnam
说实话,我仍然不完全确定我理解这个问题。你觉得你能换种方式表述吗? - Mike Vella
抱歉,我认为第一个答案解决了我的问题,但无论如何,我已经更新了问题... - shelper

0
%import numpy
%run my_python_file.py 

或者我误解了你的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接