使用Python 3to2修复程序集的问题

时间:2012-01-22 20:43:52

标签: python converter

我是编程的新手,需要一些修复工具的帮助来将为Python 3.x编写的代码重构为可以在2.x解释器上运行的代码。

我有Python 3.2,但Spotify拼图(http://www.spotify.com/us/jobs/tech/best-before/)的录取要求代码是用2.6编写的。因此,我找到了3to2的转换器。我有“3to2_py3k-1.0.tar.gz”版本,你可以从这里下载:https://bitbucket.org/amentajo/lib3to2

README文件告诉您

  

(...)运行“./3to2”转换stdin(“ - ”),文件或目录为   参数。(...)

此网站上的文字与自述文件相同。

我理解这一点我应该运行命令行,然后写:

  

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 个答案:

答案 0 :(得分:5)

您似乎没有正确安装3to2。要安装,请执行以下操作:

  1. 将您下载的.tar.gz文件解压缩到某个目录
  2. cd到该目录并运行python setup.py install
  3. 现在您可以cdSpotify.py所在的目录并运行3to2 Spotify.py,它应该有效。