我正在尝试将包含多个已定义函数的python脚本导入到不同的python脚本using this approach via SO中。由于我想导入的脚本定义了许多函数(其中一些嵌套在其他函数中),我宁愿导入整个脚本而不是单独导入每个函数。我在下面使用一个更简单的例子。
假设我的desktop
上有一个名为'workspace'
的文件夹。在文件夹'workspace'
中,有一个名为'pre.py'
的脚本,其中包含单个函数(在下面定义)和一个名为'__init__.py'
的空白文件。
def get_g(x):
""" Sample Function """
if isinstance(x, list):
res = [xi**2 for xi in x]
else:
res = x**2
return res
在同一个'workspace'
文件夹中,有一个名为'post.py'
的脚本,我想在其中导入'pre.py'
中定义的所有函数。下面是'post.py'
的示例脚本。
ATTEMPT#1:
import matplotlib.pyplot as plt
def get_my_imports(script_name, fileloc="/Users/myname/Desktop/workspace"):
""" Import Sample Function (defined above) """
from fileloc import script_name
get_my_imports('pre.py')
x = np.linspace(1, 10, 100)
y = get_g(x)
plt.plot(x, y)
plt.show()
>> ImportError: No module named 'fileloc'
ATTEMPT#2:
import matplotlib.pyplot as plt
from "/Users/myname/Desktop/workspace" import 'tst.py' ## error in this line
x = np.linspace(1, 10, 100)
y = get_g(x)
plt.plot(x, y)
plt.show()
>> SyntaxError: invalid syntax
在我的第一次尝试中,我试图概括导入py脚本的方法。但是翻译认为fileloc
是一个可导入的模块而不是我的意图。我的第二次尝试告诉我,我不理解如何做到这一点的基本原则。如何调整这种方法以使其正常工作? (如果它与文件位置相关,我正在使用苹果笔记本电脑。)
答案 0 :(得分:1)
由于您的两个python文件位于同一个工作区文件夹中,因此您只需编写
即可import pre
post.py中的导入名为pre的模块后,您可以使用
中定义的函数funcpre.func()
如果您不希望每次使用时都为给定的函数func键入模块的名称,则可以执行
from pre import func
func()
您还可以导入给定模块并为方便起见给它一个别名。例如,
import pre as p
p.func()
修改:添加模块和功能用法。