无法运行python文件包含

时间:2013-02-04 09:31:36

标签: tidesdk

<!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编码,这不是帮助

5 个答案:

答案 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.

希望这有帮助