使用Python 3to2修复器集的问题
我刚开始学习编程,需要一些帮助,把用Python 3.x写的代码改成能在2.x版本上运行的代码。
我有Python 3.2,但是Spotify Puzzle的要求是代码必须用2.6版本写。因此,我找到了一个叫3to2的转换工具。我下载了“3to2_py3k-1.0.tar.gz”这个版本,可以从这里获取:https://bitbucket.org/amentajo/lib3to2。
README文件里告诉我:
(...)运行"./3to2"来转换标准输入("-"),或者将文件或目录作为参数传入。(...)
这个网站上的文字和README文件是一样的。
我明白我应该在命令行里输入:
C:\Python32>3to2 Spotify.py
3to2不是内部或外部命令,也不是可运行的程序或批处理文件。
(这是从挪威语手动翻译过来的)。
我尝试过指定具体文件的路径,但没有找到名为“3to2”的文件。我也尝试直接指定“main.py”和“Spotify.py”文件,似乎有点反应(像是闪了一下,但没有错误),但是当我再次打开“Spotify.py”时,文件没有任何变化。
我非常感谢任何帮助。
谢谢你,spatz,这对我帮助很大。最后,我通过 cd
C:\Python32>python.exe setup.py install
成功安装了这个包。
不过我还是遇到了一些问题。以 print("Hello World!")
程序为例。当我运行 python.exe 3to2 HelloWorld.py
(没有python.exe是无法工作的)时,它的回应是:
RefractingTool: Skipping implicit fixer: collections
RefractingTool: Skipping implicit fixer: int
RefractingTool: Skipping implicit fixer: memoryview
RefractingTool: Skipping implicit fixer: printfunction
RefractingTool: Skipping implicit fixer: inittest
RefractingTool: Refactored HelloWorld.py
--- HelloWorld.py (original)
+++ HelloWorld.py (refactored)
@@ -1 +1 @@
-print("Hello World!")
+print u"Hello World!"
RefactoringTool: Files that need to be modified:
RefactoringTool: HelloWorld.py
这让我很困惑。首先,它似乎跳过了一些修复,比如 printfunction
。但后来,它确实把 print("Hello World!")
改成了 print u"Hello World!"
,这本来是应该的。问题是,当我在IDLE 3.2中打开这个文件时,文件还是原来的代码。Spotify.py文件也是一样。IDLE是不是“聪明”到能把这段简单代码改成兼容3.x的,还是说3to2的修复工具不管用?
解决办法:
我搞明白了。我需要加上 -w
作为参数。这样就能在创建备份文件 .bak
的同时,直接修改原文件。
感谢所有帮助过我的人!
1 个回答
看起来你没有正确安装 3to2
。要安装它,请按照以下步骤操作:
- 把你下载的
.tar.gz
文件解压到某个文件夹里。 - 进入那个文件夹,然后运行
python setup.py install
。
现在你可以进入包含 Spotify.py
的文件夹,然后运行 3to2 Spotify.py
,应该就能正常工作了。