gpt4 book ai didi

python - 在 .py 文件内使用 .py 文件

转载 作者:行者123 更新时间:2023-12-01 01:50:06 29 4
gpt4 key购买 nike

我对 python 相当陌生,并且一直只使用 Jupyter Notebooks。当我需要运行我已保存在计算机中某处的 .py 文件时,我通常所做的就是使用魔术命令 %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):
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."

我尝试了大部分的事情 here但它们都无法正常工作。

我在笔记本中运行 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 保存在不同的文件夹中时才需要它们。我刚刚将 efld 的副本添加到同一文件夹和 tan_vec,我不再需要它们了。

再次感谢您的帮助!

最佳答案

将文件放入jupyter根目录中。然后只需在第一个单元格顶部导入这些文件(现在称为模块)即可:

from efld import *
from tan_vec import *

如果其中一个需要另一个,请将导入放在相应文件的顶部,而不是放在 jupyter 中。

鉴于这些模块本身不会引发任何异常,因此您可以在所有其他单元中调用其中的所有函数。

e = efld(r)

请注意,两个文件中的所有函数的命名都不同。

<小时/>

编辑:正如下面的评论所指出的,您还可以直接导入您的函数:

from efld import efld as <whatever>

这样,你就可以将你的函数重命名为 <whatever>并且不必重命名位于不同模块/文件中的具有相同名称的模块/文件。

关于python - 在 .py 文件内使用 .py 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50809564/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com