2008-12-22 14 views
5

मेरे पास एक छोटी सी परियोजना है जिसे मैं पाइथन 3 को पोर्ट करने का प्रयास करना चाहता हूं - मैं इसके बारे में कैसे जा सकता हूं?पायथन 3 पोर्टिंग वर्कफ़्लो?

मैंने python2.6 -3 (ज्यादातर .has_key() कॉल को हटाकर) चेतावनी के बिना कोड चलाया है, लेकिन मुझे 2to3 टूल का उपयोग करने का सबसे अच्छा तरीका नहीं है।

इस स्रोत कोड को 3.0 वाक्यविन्यास में परिवर्तित करने के लिए 2to3 टूल का उपयोग करें। आउटपुट मैन्युअल रूप से संपादित न करें!

2to3 something.py रनिंग एक diff आउटपुट करता है, जो स्वयं के लिए उपयोगी नहीं है। --write ध्वज का उपयोग कर something.py अधिलेखित कर देता है और एक बैकअप बनाता है .. ऐसा लगता है जैसे मैं क्या करना है ..

2to3 something.py 
python3.0 something.py 
mv something.py.bak something.py 
vim something.py 
# repeat 

..which थोड़ा दौर-ए-मुक्केबाज़ी है - आदर्श मैं की तरह कुछ कर सकता है ..

mv something.py py2.6_something.py # once 

2to3 py2.6_something.py --write-file something.py 
vim py2.6_something.py 
# repeat 

उत्तर

5

अहा, आप पाइप patch आदेश को 2to3 उत्पादन है, जो एक नई फ़ाइल में संशोधित फ़ाइल को लिख सकते हैं कर सकते हैं:

mv something.py py2.6_something.py 
2to3 py2.6_something.py | patch -o something.py 
+1

काम करने के लिए एमवी के बजाय सीपी का उपयोग करें। – nosklo

+0

@ नोस्को: नहीं। पैच 2to3 – Yktula

0

2.x सक्रिय विकास के अपने codebase होना चाहिए एनटी, तो 2to3 वास्तव में एक शाखा या अस्थायी निर्देशिका में चलाया जाना चाहिए। मुझे यकीन नहीं है कि आप एक ही निर्देशिका में 2.x और 3.x संस्करणों को झूठ क्यों लेना चाहते हैं। distutils में build_2to3 स्क्रिप्ट है जो 3.0 इंस्टॉल पर 2to3 चलाएगी।

+0

द्वारा diff आउटपुट को पढ़ता है, इसलिए मैं 2.x संस्करण को तेज़ी से/आसानी से संपादित कर सकता हूं, 2to3 चला सकता हूं, 3.x (और दोहराना) पर परीक्षण चला सकता हूं। अगर मेरे पास 3.x के लिए शाखा है, तो मैं 2.x शाखा में त्वरित रूप से परिवर्तन कैसे करूं और 2to3'd कोड को पुन: उत्पन्न करूं? – dbr

+0

आम तौर पर, आप 2.x शाखा पर अपने सभी परिवर्तन करेंगे, और जब आप वितरित कर रहे थे या अपनी लाइब्रेरी को पोर्ट करने का प्रयास कर रहे थे तो केवल 2to3 का उपयोग करें। –

+0

मैंने सवाल थोड़ा स्पष्ट कर दिया है। मैंने py2 शाखा को py2.6 कोड में किए गए परिवर्तनों को शामिल करने के लिए बनाया है, इसलिए यह 2to3 त्रुटियों के बिना होगा – dbr

संबंधित मुद्दे