python代码运行助手怎么打开


python代码运行助手是能在网页上运行python语言的工具 。因为python的运行环境在很多教程里都是用dos的,黑乎乎的界面看的有点简陋,所以出了这python代码运行助手,作为ide 。
实际上 , python代码运行助手界面只能算及格分,如果要找ide,推荐使用jupyter 。jupyter被集成到ANACONDA里,只要安装了anacoda就能使用了 。
回到这个问题:
1、要打开这运行助手首先要下载一个learning.py,如果找不到可以复制如下代码另存为“learning.py”,编辑器用sublime、或者notepad。
#!/usr/bin/env?python3
#?-*-?coding:?utf-8?-*-
r'''
learning.py
A?Python?3?tutorial?from?http://www.liaoxuefeng.com
Usage:
python3?learning.py
'''
import?sys
def?check_version():
v?=?sys.version_info
if?v.major?==?3?and?v.minor?>=?4:
return?True
【python代码运行助手怎么打开】print('Your?current?python?is?%d.%d.?Please?use?Python?3.4.'?%?(v.major,?v.minor))
return?False
if?not?check_version():
exit(1)
import?os,?io,?json,?subprocess,?tempfile
from?urllib?import?parse
from?wsgiref.simple_server?import?make_server
EXEC?=?sys.executable
PORT?=?39093
HOST?=?'local.liaoxuefeng.com:%d'?%?PORT
TEMP?=?tempfile.mkdtemp(suffix='_py',?prefix='learn_python_')
INDEX?=?0
def?main():
httpd?=?make_server('127.0.0.1',?PORT,?application)
print('Ready?for?Python?code?on?port?%d...'?%?PORT)
httpd.serve_forever()
def?get_name():
global?INDEX
INDEX?=?INDEX? ?1
return?'test_%d'?%?INDEX
def?write_py(name,?code):
fpath?=?os.path.join(TEMP,?'%s.py'?%?name)
with?open(fpath,?'w',?encoding='utf-8')?as?f:
f.write(code)
print('Code?wrote?to:?%s'?%?fpath)
return?fpath
def?decode(s):
try:
return?s.decode('utf-8')
except?UnicodeDecodeError:
return?s.decode('gbk')
def?application(environ,?start_response):
host?=?environ.get('HTTP_HOST')
method?=?environ.get('REQUEST_METHOD')
path?=?environ.get('PATH_INFO')
if?method?==?'GET'?and?path?==?'/':
start_response('200?OK',?[('Content-Type',?'text/html')])
return?[b'Learning?Pythonarea?name="code"?>area>Run
']
if?method?==?'GET'?and?path?==?'/env':
start_response('200?OK',?[('Content-Type',?'text/html')])
L?=?[b'ENV']
for?k,?v?in?environ.items():
p?=?'%s?=?%s'?%?(k,?str(v))
L.append(p.encode('utf-8'))
L.append(b'')
return?L
if?host?!=?HOST?or?method?!=?'POST'?or?path?!=?'/run'?or?not?environ.get('CONTENT_TYPE',?'').lower().startswith('application/x-www-form-urlencoded'):
start_response('400?Bad?Request',?[('Content-Type',?'application/json')])
return?[b'{"error":"bad_request"}']
s?=?environ['wsgi.input'].read(int(environ['CONTENT_LENGTH']))
qs?=?parse.parse_qs(s.decode('utf-8'))
if?not?'code'?in?qs:
start_response('400?Bad?Request',?[('Content-Type',?'application/json')])
return?[b'{"error":"invalid_params"}']
name?=?qs['name'][0]?if?'name'?in?qs?else?get_name()
code?=?qs['code'][0]
headers?=?[('Content-Type',?'application/json')]
origin?=?environ.get('HTTP_ORIGIN',?'')
if?origin.find('.liaoxuefeng.com')?==?-1:
start_response('400?Bad?Request',?[('Content-Type',?'application/json')])
return?[b'{"error":"invalid_origin"}']
headers.append(('Access-Control-Allow-Origin',?origin))
start_response('200?OK',?headers)
r?=?dict()
try:
fpath?=?write_py(name,?code)
print('Execute:?%s?%s'?%?(EXEC,?fpath))
r['output']?=?decode(subprocess.check_output([EXEC,?fpath],?stderr=subprocess.STDOUT,?timeout=5))
except?subprocess.CalledProcessError?as?e:
r?=?dict(error='Exception',?output=decode(e.output))
except?subprocess.TimeoutExpired?as?e:
r?=?dict(error='Timeout',?output='执行超时')
except?subprocess.CalledProcessError?as?e:
r?=?dict(error='Error',?output='执行错误')
print('Execute?done.')
return?[json.dumps(r).encode('utf-8')]
if?__name__?==?'__main__':
main()2,再用一个记事本写如下的代码:
@echo?off
python?learning.py
pause另存为‘运行.bat’
3、把“运行.bat”和“learning.py”放到同一目录下,
4、双击运行“运行.bat",之后会弹出黑色的dos窗口,这个窗口不要关闭 。
5、输入网址对应的网址和端口,整个过程就完成了 。

    推荐阅读