<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<style type="text/css">
body {background: #fff;}
</style>
</head>
<body>
<h1>Hello World</h1>
<script type="text/python" src="test.py"/>
<script type="text/javascript">
window.onload=function(){
alert("python: " + hello());
}
</script>
</body>
</html>
test.py
#!/usr/bin/env python
def hello():
return "hello"
在TideSDK开发中说: [错误]在页面上削减Python时发生错误:语法无效,('',2,1,'\ r \ n')
但这有效!!为什么呢?
<script type="text/python">
def hello():
return "hello"
</script>
<script type="text/javascript">
window.onload=function(){
alert("python: " + hello());
}
</script>
我是TideSDK的新手,我的电脑是WIN7 x86,安装了python2.7.3,TideSDK 1.3.1-beta, 我不知道这个问题,请帮忙。
我尝试更改test.py编码,这不是帮助
答案 0 :(得分:1)
我们正在研究这个问题。我们计划用1.3.2-beta发布的新版本的php应该可以解决这个问题。
答案 1 :(得分:1)
我有同样的问题。不幸的是,我还没有找到最好的解决办法。但是,在每个html文件中实现源代码对我来说完全不可能。
错误是抱怨行结尾。我认为我在Windows中工作,所以行结尾如下:\r\n
。 TideSDK为外部python文件编写了一种解析器,但完全忽略了以任何理由结束的窗口行(并维护了unix样式行结尾)。 \r\n
即将成为奇怪的不可解析的语法并停止阅读文件的其余部分。在他们修复这个故障之前,我只能看到一个选项。将所有外部python文件的行结尾从\r\n
更改为\n
。
如果支持新行替换,您可以使用自己喜欢的IDE执行此操作。或者,如果它不支持更改换行符,那么您可以使用python文件替换所有这些,如下所示:
fn = 'main.py'
with file(fn, 'rb') as f:
data = f.read()
with file(fn, 'wb') as f:
f.write(data.replace('\r\n', '\n'))
但是,如果您选择第二条路线,则每次保存文件时都会强制您运行此脚本。
如果我找到更好的答案,我会告诉你。
答案 2 :(得分:0)
尝试删除#!来自python文件的行,无论如何它对TideSDK都没有用。
答案 3 :(得分:0)
对我来说,问题是在def动作()之前有空行:
我有一个首先出现的导入,但它似乎不喜欢def
之前的空行答案 4 :(得分:0)
我在Windows上使用eclipse时遇到了这个问题。看来TideSDK python解释器需要Unix样式行分隔符(即告诉计算机将文本放在新行上的不可打印字符)
Windows使用两个字符“\ r \ n”(回车和换行),其中unix仅使用换行符。因此,如果您在Widows上使用文本编辑器,则每次点击“enter”或“return”时,它很可能会插入“\ r \ n”。
如果您使用Eclipse作为文本编辑器,则修复程序为
File -> Convert Line Delimiters To
并选择Unix。
要使文本编辑器对所有新文件执行此操作,请在
中选择“其他”和“Unix”Window -> Preferences -> General -> Workspace -> New text file line delimiter.
希望这有帮助