2017-10-29 61 views
0

我想将包含几个定义函数的python脚本导入到不同的python脚本using this approach via SO。由于我想导入的脚本定义了许多函数(其中一些嵌套在其他函数中),我宁愿导入整个脚本而不是单独导入每个函数。我在下面使用一个更简单的例子。如何将所有已定义的函数从python脚本一导入python脚本二?

假设我在我的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'的示例脚本。

未遂#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' 

未遂#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 

在我第一次尝试,我试着概括进口吡啶脚本的方法。但翻译认为fileloc是一个可导入的模块,而不是我的意图。我的第二次尝试告诉我,我不了解如何做到这一点的基本知识。这种方法如何适应正确的工作? (我使用的是苹果笔记本电脑,如果是相关的文件位置)。

+1

查看链接的dupe。^ –

回答

1

因为你的两个Python文件是在同一个工作区文件夹,您可以简单的写

import pre 

在post.py.导入模块名为PRE后,可以通过

pre.func() 

使用它定义的函数func如果你不希望在每次使用它时都必须键入模块的名称对给定函数func,可以做

from pre import func 
func() 

您也可以导入给定的模块,并给它一个别名,以方便。例如,

import pre as p 
p.func() 

编辑:添加模块和功能用途。

+0

我尝试过,但我收到此错误。 'y = get_g(x) NameError:名称'get_g'未定义' – mikey

+0

请参阅我的最新编辑。 – eozd