سؤال

لقد بدأت تعلم لغة بايثون من خلال كتابة تطبيق صغير باستخدام Python 3.1 وpy-postgresql.الآن أريد تحويله إلى تطبيق ويب.

ولكن يبدو أن معظم أطر العمل مثل web-py وdjango وzope لا تزال تعتمد على Python 2.x.لسوء الحظ، py-postgresql غير متوافق مع Python 2.x.

هل يجب علي إعادة كتابة جميع فصولي واستبدال py-postgresql بشيء مدعوم من web-py وما إلى ذلك، أم أن هناك إطار عمل متوافق مع Python 3.1؟

أو ربما يكون py-postgresql متوافقًا مع 2.x لكني لم أكتشف ذلك؟

هل كانت مفيدة؟

المحلول

تحديث:هذه الإجابة قديمة في عام 2011.

ما لم تكن مهتمًا بشق طريق جديد أثناء محاولتك تعلم بايثون على الإطلاق، فإنني أوصي بتحويل مشروعك إلى بايثون 2.x.نأمل ألا يستخدم الكود الخاص بك الكثير py-postgresql ميزات غير موجودة في واجهة DB-API المدعومة على نطاق واسع.

يجب أن تنظر psycopg2 لواجهة متوافقة مع Python 2.x DB-API أو إذا كنت تريد الانتقال إلى مستوى أعلى SQLAlchemy والتي يمكن استخدامها في إصدار svn psycopg2 أو py-postgresql بالتبادل.

قد تكون مهتم ايضا ب 3to2 والذي يقوم تلقائيًا بتحويل كود Python 3.x إلى كود Python 2.x عندما يكون ذلك ممكنًا.

نسخة مكررة من #373945 ما هي أطر تطوير الويب التي تدعم Python 3؟

نصائح أخرى

ولقد وجدت للتو عن WSGI: يمكن أيضا تطبيق متوافق WSGI تكون مكتوبة في بيثون 3.1. التعليمة البرمجية التالية يعمل على ما يرام في بيثون 3.1:

def webapp(environment, start_response):
    start_response('200 OK', [('content-type', 'text/html')])
    return ['Hello, World!']

if __name__ == '__main__':
    from wsgiref import simple_server
    simple_server.make_server('', 8080, webapp).serve_forever()

والموقع WSGI لديها الكثير من المؤشرات إلى الأطر. و إطار زجاجة يدعي "زجاجة يعمل مع بيثون 2.5+ و 3.x (باستخدام 2to3)" لذلك أنا سأعطي أن المحاولة.

وفيما يلي نسخة مبسطة من الخادم WSGI اعصار في تنفيذها في بيثون 3.

http://code.activestate.com/recipes/576906/

وربما لديه بعض الأخطاء، ولكن يمكن الحصول على انك بدأته

وعلى الرغم من أنه لم يصدر رسميا بعد، وأنا حاليا "حول اللعب" مع CherryPy 3.2.0rc1 مع بايثون 3.1.1 وليس لديه مشاكل حتى الان. لم تستخدم مع PY-كيو، ولكن أنا لا أرى لماذا لا يجب أن تعمل.

ويساعد هذا الأمل، آلان

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top