90 votes

Comment obtenez-vous PyPy, Django et PostgreSQL pour travailler ensemble ?

Ce que la fourche ou d'une combinaison de paquets doit-on utiliser pour faire PyPy, Django et PostgreSQL jouer bien ensemble?

Je sais que PyPy et Django jouer bien ensemble, mais je suis moins certain de PyPy et PostgreSQL. Je ne vois qu'Alex Gaynor a fait un fork de PyPy appelé pypy-postgresql. Je sais aussi que certaines personnes sont à l'aide de psycopg2-ctypes.

Est-il une différence entre ces fourches? Ou devons-nous utiliser l'stable à 1,9 PyPy et l'utilisation psycopg2-ctypes? À l'aide de la ctypes options pourraient nuire à la performance, voir le commentaire ci-dessous.

Aussi, quelqu'un a connu des pièges à l'aide de PyPy avec pyscopg2? Il semble assez facile de se rabattre sur Disponible si quelque chose ne fonctionne pas bien, mais surtout, je suis à la recherche de choses qu'un programmeur peut faire à l'avance de temps pour se préparer.

J'ai regardé autour, il ne semble pas qu'psycopg2 fonctionne en mode natif avec PyPy. Bien que, psycopg2-ctypes ne semble pas fonctionner pour certaines personnes, il y avait une discussion sur pypy-dev. Je travail sur Windows, et je ne pense pas que psycopg2-ctypes est prêt pour Windows, malheureusement.

33voto

intgr Points 9041

psycopg2-ctypes

Je sais aussi que certaines personnes sont à l'aide de psycopg2-ctypes.

C'est le moyen le plus facile; pour rester compatible avec les deux, il suffit d'ajouter ce code dans votre Django settings.py:

try:
    import psycopg2
except ImportError:
    # Fall back to psycopg2-ctypes
    from psycopg2ct import compat
    compat.register()

J'ai testé il y a quelques communiqués de ago; malheureusement, dans mon expérience, psycopg2-ctypes nie les petits gains de performances offertes par PyPy. Mais YMMV, il dépend de la façon dont JIT-friendly votre code est, en général, et quelle est la fraction de temps que vous dépensez réellement l'exécution de code Python. Et peut-être PyPy a juste amélioré depuis.

et je ne pense pas que psycopg2-ctypes est prêt pour Windows

Je n'ai pas essayé, mais ctypes est indépendant de la plateforme. AFAICT vous avez juste à vous assurer que l' libpq.dll bibliothèque est chargeable (situé dans un répertoire dans votre variable d'environnement PATH ou un répertoire local) et il devrait fonctionner sur Windows comme sous Linux.

pypy-postgresql

Je ne vois qu'Alex Gaynor a fait un fork de PyPy appelé pypy-postgresql.

Je ne pense pas que c'est un bon choix à long terme. La direction générale n'a pas été mis à jour depuis plus d'un an et mes tentatives de construire ont échoué. Et il semble erroné de coder un driver PostgreSQL dans l'interpréteur de toute façon.

Je crois que il n'y a pas de binaires de pypy-postgresql, donc si vous voulez l'utiliser, vous aurez besoin de construire l'ensemble de la PyPy direction de vous-même. Pas pour les faibles de cœur: il faut plusieurs dizaines de minutes et d'une machine avec au moins 4 GO de mémoire. (Instructions officielles: http://pypy.org/download.html#building-from-source)

Pour construire, il faut d'abord la source. Si vous avez Mercurial installé, vous pouvez simplement hg clone https://bitbucket.org/alex_gaynor/pypy-postgresql. Si pas, vous pouvez télécharger le automagique "astuce" fichier zip: https://bitbucket.org/alex_gaynor/pypy-postgresql/get/tip.zip

Ouvrez une ligne de commande, allez dans le répertoire décompressé, puis à l'intérieur d' pypy/translator/goal

Si vous avez PyPy installé, il est recommandé de l'utiliser pour la construction:

pypy translate.py -Ojit

Sinon:

python translate.py -Ojit

Malheureusement, ce n'est là que mes connaissances se termine. J'obtiens l'erreur "BytecodeCorruption: unimplemented opcode, ofs=234, code=203, name=BUILD_LIST_FROM_ARG"

16voto

akaihola Points 10007

Quelques ressources supplémentaires:

  • PyPy informations sur la compatibilité: DB adaptateurs
  • PostgreSQL page sur le wiki Python
  • psycopg2cffi par Konstantin Lopuhin:
    cffi la mise en œuvre de psycopg2 pour PyPy 2.0 et versions plus récentes
    (post de blog, dépôt GitHub, PyPI page, pypy-thread dev)
    – cela ressemble à la plus forte candidat actuellement, mais je n'ai pas encore testé
  • psycopg2ct par Michael van Tellingen:
    ctypes la mise en œuvre de psycopg2 pour PyPy 1.6 et plus récente
    (Dépôt GitHub, PyPI page)
  • pypy-postgresql par Alex Gaynor:
    abandonné RPython port de psycopg2 mis en œuvre comme un fork de PyPy (Bitbucket repo)
  • pypq:
    "Python, PostgreSQL DBAPI 2.0 pilote à l'aide de ctypes et libpq.donc, fonctionne avec PyPy"
    (discussion, PyPI page)
  • bpgsql:
    "Barebones pur python client PostGreSQL. La plupart DB-API 2.0 (PEP 249) conforme. Comprend un dispositif expérimental de Django 1.0 backend"
    (discussion, page web, la page Google Code)
  • pg8000:
    "un DB-API 2.0 compatible Pur Python interface de la base de données PostgreSQL moteur [...] ne repose pas sur toutes les bibliothèques externes (tels que la compilation d'un module python, ou PostgreSQL de la bibliothèque libpq)"
    (page web, dépôt GitHub, PyPI page)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X