2017-10-29 15 views
0

정의 된 여러 함수가 들어있는 python 스크립트를 다른 python 스크립트 using this approach via SO으로 가져 오려고합니다. 임포트하고 싶은 스크립트는 여러 함수 (다른 함수 안에 중첩되어 있음)를 정의하기 때문에 각 함수가 아닌 개별 함수를 개별적으로 임포트하는 것을 선호합니다. 아래의 간단한 예제를 사용하고 있습니다.python 스크립트에서 정의 된 모든 함수를 python 스크립트 2로 가져 오는 방법은 무엇입니까?

desktop'workspace'이라는 폴더가 있습니다. 폴더 'workspace'에는 단일 기능 (아래 정의 됨)과 '__init__.py'이라는 빈 파일이 포함 된 'pre.py'이라는 스크립트가 있습니다. 같은 'workspace' 폴더에서

def get_g(x): 
    """ Sample Function """ 
    if isinstance(x, list): 
     res = [xi**2 for xi in x] 
    else: 
     res = x**2 
    return res 

, 나는 'pre.py'에 정의 된 모든 기능을 수입하고자하는 'post.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

링크 된 사례를 참조하십시오.^ –

답변

1

, 당신은 단순히 post.py.에서

import pre 

을 쓸 수 있습니다 주어진 함수 func에 대한 당신이 그것을 사용할 때마다 모듈의 이름을 입력하지 않으려면 모듈 이름 사전을 가져온 후, 당신은 당신이 할 수있는,

pre.func() 

하여 정의 함수 FUNC를 사용할 수 있습니다 do

from pre import func 
func() 

주어진 모듈을 가져 와서 편의를 위해 별칭을 지정할 수도 있습니다. 예를 들어,

import pre as p 
p.func() 

편집 : 추가 모듈과 기능 용도.

+0

시도했지만이 오류가 나타납니다. 'y = get_g (x) NameError : 'get_g'이름이 정의되지 않았습니다. ' – mikey

+0

최근 편집을 참조하십시오. – eozd