project-creator cocos2d-x 2.1.4 with python3

先日のcreate_project.py。なんかエラーが出て使えない。

と思ったらpython2で書かれてますね、これ。

って事でpython3で動かすために変更をしてみたので備忘録。

本家のForumで検索かけると “tools\project-creator\create_project_python3.py” のファイル名がヒットする。

恐らくgitから持ってくればpython3対応のファイルが既にあるんだと思う。

以下の方法は VS2012でのBuild以外は あまりテストしていないので面倒でない人はそちらを参照する事を推奨。

実行は Win x64版 python3.3.2でpython.orgから落とせるやつを私は使ってます。

--- create_project.py	2013-08-02 12:30:31.736776500 +0900
+++ create_project.py.1~	2013-06-11 12:51:24.000000000 +0900
@@ -24,15 +24,15 @@
 import shutil
 
 def dumpUsage():
-    print("Usage: create_project.py -project PROJECT_NAME -package PACKAGE_NAME -language PROGRAMING_LANGUAGE")
-    print("Options:")
-    print("  -project   PROJECT_NAME          Project name, for example: MyGame")
-    print("  -package   PACKAGE_NAME          Package name, for example: com.MyCompany.MyAwesomeGame")
-    print("  -language  PROGRAMING_LANGUAGE   Major programing lanauge you want to used, should be [cpp | lua | javascript]")
-    print("")
-    print("Sample 1: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame")
-    print("Sample 2: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language javascript")
-    print("")
+    print "Usage: create_project.py -project PROJECT_NAME -package PACKAGE_NAME -language PROGRAMING_LANGUAGE"
+    print "Options:"
+    print "  -project   PROJECT_NAME          Project name, for example: MyGame"
+    print "  -package   PACKAGE_NAME          Package name, for example: com.MyCompany.MyAwesomeGame"
+    print "  -language  PROGRAMING_LANGUAGE   Major programing lanauge you want to used, should be [cpp | lua | javascript]"
+    print ""
+    print "Sample 1: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame"
+    print "Sample 2: ./create_project.py -project MyGame -package com.MyCompany.AwesomeGame -language javascript"
+    print ""
 
 def checkParams(context):
     # generate our internal params
@@ -60,13 +60,13 @@
     # pinrt error log our required paramters are not ready
     raise_error = False
     if context["dst_project_name"] == "undefined":
-        print("Invalid -project parameter")
+        print "Invalid -project parameter"
         raise_error = True
     if context["dst_package_name"] == "undefined":
-        print("Invalid -package parameter")
+        print "Invalid -package parameter"
         raise_error = True
     if context["language"] == "undefined":
-        print("Invalid -language parameter")
+        print "Invalid -language parameter"
         raise_error = True
     if raise_error != False:
         sys.exit()
@@ -106,15 +106,13 @@
     content = ""
     f1 = open(filepath, "rb")
     for line in f1:
-        # convert bytes to str
-        lineStr = str(line, encoding='utf-8')
-        if src_string in lineStr:
-            content += lineStr.replace(src_string, dst_string)
+        if src_string in line:
+            content += line.replace(src_string, dst_string)
         else:
-            content += lineStr
+            content += line
     f1.close()
     f2 = open(filepath, "wb")
-    f2.write(content.encode('utf-8'))
+    f2.write(content)
     f2.close()
 # end of replaceString
 
@@ -168,7 +166,7 @@
             replaceString(proj_path + dst, context["src_project_name"], context["dst_project_name"])
                   
     # done!
-    print("proj.%s\t\t: Done!" % platform)
+    print "proj.%s\t\t: Done!" % platform
 # end of processPlatformProjects
 
 
@@ -184,8 +182,8 @@
 
 # copy "lauguage"(cpp/lua/javascript) platform.proj into cocos2d-x/projects/<project_name>/folder
 if (os.path.exists(context["dst_project_path"]) == True):
-    print("Error:" + context["dst_project_path"] + " folder is already existing")
-    print("Please remove the old project or choose a new PROJECT_NAME in -project parameter")
+    print "Error:" + context["dst_project_path"] + " folder is already existing"
+    print "Please remove the old project or choose a new PROJECT_NAME in -project parameter"
     sys.exit()
 else:
     shutil.copytree(context["src_project_path"], context["dst_project_path"], True)
@@ -196,6 +194,6 @@
 #    exec "import %s.handle_project_files" % (platform)
 #    exec "%s.handle_project_files.handle_project_files(context)" % (platform)
 
-print("New project has been created in this path: " + context["dst_project_path"].replace("/tools/project-creator/../..", ""))
-print("Have Fun!")
+print "New project has been created in this path: " + context["dst_project_path"].replace("/tools/project-creator/../..", "")
+print "Have Fun!"
 

追記:再度、Googleってみたところ本家の変更はこれなのかな?

https://gist.github.com/limon/5940032

ちゃんと比べてないけど変更の方法は多分ほぼ同じ。唯一違うのが、私の変更が相変わらずファイルをBinaryオープンしてるのに対して

↑の変更はencodingを指定してTextオープンしている点。

git側の実装だと改行コードがlfだったファイルがcrlfに変更になってしまって好みじゃないんだよなぁ、、、。うーむ。

Leave a Reply

Your email address will not be published. Required fields are marked *