Python 在.py文件中使用.py文件
我对python还相当陌生,我一直在专门使用Jupyter笔记本。当我需要运行一个.py文件时,我将它保存在我的计算机中的某个地方,我通常只需使用magic命令%runPython 在.py文件中使用.py文件,python,jupyter-notebook,Python,Jupyter Notebook,我对python还相当陌生,我一直在专门使用Jupyter笔记本。当我需要运行一个.py文件时,我将它保存在我的计算机中的某个地方,我通常只需使用magic命令%run %run '/home/cody/.../Chapter 3/efld.py' %run '/home/cody/.../Chapter 5/tan_vec.py' 然后在下一个单元格中,我可以毫无问题地运行efld.py。但是tan_vec.py使用efld.py,看起来像这样 def tan_vec(r): imp
%run '/home/cody/.../Chapter 3/efld.py'
%run '/home/cody/.../Chapter 5/tan_vec.py'
然后在下一个单元格中,我可以毫无问题地运行efld.py。但是tan_vec.py使用efld.py,看起来像这样
def tan_vec(r):
import numpy as np
#Finds the tangent vector to the electric field at point 'r'
e = efld(r)
e = np.array(e) #Turn 'e' into a numpy array so I can do math with it a little easier.
emag = np.sqrt(sum(e**2)) #Magnitude of the
return e / emag
当我尝试运行时,我得到了错误
"NameError: name 'efld' is not defined."
大多数东西我都试过了,但都不管用
我在笔记本上运行py文件是不是搞错了?有没有更好的方法来运行/调用笔记本中的py文件?
如何使我可以在另一个py文件中运行一个py文件
编辑
谢谢大家的帮助!我只是想添加最后的代码,以防以后有人遇到这个问题并想看看我做了什么
def tan_vec(r):
#import sys
#sys.path.insert(0, '/home/cody/Physics 331/Textbook Programs/Chapter 3')
from efld import efld
import numpy as np
#Finds the tangent vector to the electric field at point 'r'
e = efld(r)
e = np.array(e) #Turn 'e' into a numpy array so I can do math with it a little easier.
emag = np.sqrt(sum(e**2)) #Magnitude of the
return e / emag
前两行被注释掉,因为只有当efld.py和tan_vec.py保存在不同的文件夹中时才需要它们。我只是在同一个文件夹和tan_vec中添加了一份efld,我不再需要它们了
再次感谢您的帮助 将文件放在jupyter根目录中。然后只需在第一个单元格顶部导入这些文件(现在称为模块):
from efld import *
from tan_vec import *
如果其中一个需要另一个,请将导入放在相应文件的顶部,而不是放在jupyter中
假设这些模块本身不抛出任何异常,那么您可以在所有其他单元中调用其中的所有函数
e = efld(r)
请注意,两个文件中的所有函数的名称都不同
编辑: 正如下面的评论所指出的,您也可以直接导入您的函数:
from efld import efld as <whatever>
从efld导入efld作为
通过这种方式,您可以将函数重命名为
,而不必重命名位于不同模块/文件中的同名函数。听起来您应该在tan_vec顶部导入efld…@CodyBrown如果导入的脚本中有错误,将不会导入脚本@这是链接中建议的内容之一。我把import efld放在tan_vec的开头,但是我得到了一个错误,“TypeError:“module”对象不可调用”您想要导入函数,而不是模块。所以它看起来更像是tan_vec import tan_vec的@CodyBrown最好不要把问题的答案放在问题本身中。如果您对现有答案不满意,请将其作为答案发布。请注意,两个文件中的所有函数的名称都不同。
-如果您导入所需的特定内容而不是通配符,则该问题将消失。。。