exec()를 사용하여 간단한 선 그리기 프로그램을 실행 해 보았습니다. 잘 작동했습니다. 하지만 tcp/ip 네트워크 (서버가 프로그램을 읽고이를 문자열 유형의 변수 (b)로받는 클라이언트에게 전송)를 통해 동일한 프로그램을 실행하려고 시도한 다음 exec (b) 클라이언트에서 실행하기 만은 말한다 : 나가서 설명하자면 NameError가 :"exec()"중에 전역 이름 'display'가 정의되어 있지 않습니다.
이from OpenGL.GLUT import *
from OpenGL.GLU import *
from OpenGL.GL import *
import sys
name = 'line'
def display():
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
glPushMatrix()
glTranslatef(-1,-1,0)
gluLookAt(
0.1, 0.1, 0.3,
0.0, 0.0, 0.0,
0.0, 1.0, 0.0);
glLineWidth(3.0)
color = [1.,1.,1.,1.]
glBegin(GL_LINES)
glVertex3f(0,0,0) # origin of the line
glVertex3f(.5,1.0,.9) # ending point of the line
glEnd()
glPopMatrix()
glutSwapBuffers()
return
def main():
glutInit(sys.argv)
print 'hello'
glutCreateWindow(name)
glClearColor(0.4,0.5,0.3,1.0)
glutDisplayFunc(display)
glutMainLoop()
return
main()
클라이언트 코드의이 부분은 프로그램 저장을받습니다 전역 이름 '디스플레이'
라인 그리기 코드는 정의되지 않는다 변수에 넣은 다음 exec()를 사용합니다.
while f:
a = client.recv(1024)
if a=="#p":
f=0
break
b+=a
print b
exec(b)
코드는 print hello가 주어진 부분까지 실행 한 다음 중지합니다.
오류 메시지 :
hello
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "r13client.py", line 31, in run
exec(b)
File "<string>", line 34, in <module>
File "<string>", line 31, in main
NameError: global name 'display' is not defined
내가 잘못 여기에 무슨 일이 일어나고 있는지 이해 할 수없는입니다. 누구라도 도와 주면 감사 할 것입니다.
를 살펴? – TryPyPy
잠깐, 뭐라구? 네트워크를 통해 전체 코드를 보낸 다음 클라이언트에서 exec()를 수행합니까? 아마도 구현하고자하는 것을 구현하는 올바른 방법이 아닙니다. :) –
세 가지 질문을했습니다. 예제에는 네트워크 프로그래밍이 없지만 모두 "파이썬에서 네트워크 프로그래밍"이라는 제목을 사용합니다. 또한 사람들이 묻는 질문에는 절대 * 답을하지 않습니다. 이것은 Stackoverflow에 대한 도움말을 얻는 올바른 방법이 아닙니다. –