2014-11-22 2 views
1

매우 구체적인 문제가 있습니다. 나는 파이썬 함수를 파이썬 문자열에서 가져온 파이썬 스크립트 안에서 호출하기를 원한다.문자열에서 파이썬 코드 (모듈 포함)를 실행합니다.

소리가 복잡하지만 그렇지 않습니다. 이 터미널 (ipython 및 CPython과)에서 작동

x = """import os 
def test(): 
    print(os.curdir) 
""" 
exec(x) 
test() 

하지만 실제 파이썬 스크립트 내에서 작동하지 않습니다 내가하고 싶은이있다. 그것은 os가 수입되지 않기 때문에 작동하지 않을 것입니다., 그래서 os가 폐기 된 스코프로 반입되기 때문에 추측합니다. 그리고 스크립트에서 호출 할 때 임포트 된 OS가 없습니다.

나는이 성가신 문제를 해결할 수있는 다른 방법이 있지만, 모두 하드 디스크에 파일을 쓰는 것을 포함합니다 (이는 내 스크립트에서 용납되지 않습니다).

UPDATE

죄송합니다, 당신은 함수에서 간부 및 테스트 호출하면 분명히이 문제는 무슨 일이 일어나고

예 :

x = """import os 
def test(): 
     print(os.curdir) 
     """ 

def mytest(): 
    exec(x) 
    test() 
mytest() 

다른 하나는에 말이없는, 분명히 작동 모두 나를 위해.

+0

이 코드를 Python 2.7.6 및 Python 3.2.3에서 실행해도 문제가 없습니다. – syntagma

+0

나는이 질문을 업데이트했다. 고마워. – Smarties89

답변

0

코드에 문제가 있다고 생각하지 않습니다. 나는, 모두 리눅스 및 Mac OS X의 또

에, 파이썬 2.7.6 파이썬 3.2.3 모두에 그것을 시도했습니다는 잘 작동 다음 :

#!/usr/bin/python 

x = """import os 
def test(): 
    print(os.curdir) 
""" 
exec(x) 
test() 
print (os.curdir) 
0

사용하고있는 파이썬 버전? 나는 그것이 작동해서는 안 모른다. Exec은 동일한 전역 범위에서 실행합니다. 테스트가 유효하면 os도 사용 가능해야합니다.)

+0

GCC 4.8.2로 컴파일 된 Python 2.7.6 (기본값, Mar 22 2014, 22:59:56)을 사용합니다. (14.04 LTS 표준 우분투 서버 파이썬) – Smarties89