我正在尝试使用RPython 3.*包来翻译PyPy程序,就像它出现在下载页面上一样。
我只能使用2.7 RPython版本来翻译我的简单PyPy程序,而不能使用任何进一步的版本。我的RPython程序:
import os
import sys
def entry_point(argv):
os.write(1, bytes("Hello World!\n", "utf-8"))
return 0
def target(*args):
return entry_point, None我的脚本下载源代码和二进制文件并运行翻译命令:
#!/bin/bash
set -e
function get_pypy(){
VERSION=$1
rm -fr "${VERSION}-src.tar.bz2" "${VERSION}-osx64.tar.bz2" "${VERSION}-osx64" "${VERSION}-src"
wget -S "https://downloads.python.org/pypy/${VERSION}-src.tar.bz2" && tar -xvf "${VERSION}-src.tar.bz2"
wget -S "https://downloads.python.org/pypy/${VERSION}-osx64.tar.bz2" && tar -xvf "${VERSION}-osx64.tar.bz2"
}
function run_translate(){
VERSION=$1
FILENAME=$2
"${PWD}/${VERSION}-osx64/bin/pypy" "${PWD}/${VERSION}-src/rpython/bin/rpython" "${PWD}/${FILENAME}"
}
# 3.9
VERSION=pypy3.9-v7.3.9
get_pypy "${VERSION}"
run_translate "${VERSION}" "hello_world.py"在运行它时,我会得到以下错误:
File "/Users/kimchi/git-repos/side-projects/bf.meta.tracing/scripts/python-versions/pypy3.9-v7.3.9-src/rpython/bin/rpython", line 17
print __doc__
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print(__doc__)?看起来Python3.9正在抱怨Python2.7 print语句。但它们都是从3.9个来源下载的。
(如有任何帮助,将不胜感激:)
从我到目前为止所看到的(关于这一点的文档已经过时了),有两种方法可以运行转换过程:
pypy ./rpython/bin/rpython program.py
# AND
python ./rpython/translator/goal/translate.py program.py有什么不同吗?
发布于 2022-11-01 14:38:28
因为RPython是python2语言的衍生物,所以您必须使用python2.7 ( CPython python2.7或PyPy 2.7)来翻译。如果文件中有明确规定的地方,请指出。例如,这里是它明确声明RPython构建在python2上的一个地方。
下载的源代码将构建python3.9解释器,但代码是RPython (即python2),就像RPython 3.9的代码是用C编写的。
https://stackoverflow.com/questions/74265676
复制相似问题