2009-01-08 4 views
4

Je suis sur le point de démarrer un projet personnel en utilisant python et je vais l'utiliser sur Linux (Fedora) et Windows (Vista), même si je pourrais aussi bien le faire fonctionner sur un mac tout en il. J'ai trouvé une API pour le GUI qui fonctionnera sur tous les 3. La raison pour laquelle je demande est parce que j'ai toujours entendu parler de petites différences qui sont facilement évitées si vous les connaissez avant de commencer. Est-ce que quelqu'un a des conseils ou des suggestions qui vont dans ce sens?Python et différents systèmes d'exploitation

Répondre

4

En général:

  • Soyez prudent avec les chemins. Utilisez os.path dans la mesure du possible.
  • Ne supposez pas que HOME pointe vers le répertoire home/profile de l'utilisateur.
  • Évitez d'utiliser des choses telles que les sockets unix, les fifos et d'autres éléments spécifiques à POSIX.

choses spécifiques:

  • Si vous utilisez wxPython, notez qu'il peut y avoir des différences dans des choses comme le thread certains événements sont générés dans Ne présumez pas que les événements sont générés dans un. fil spécifique. Si vous appelez une méthode qui déclenche un événement GUI, ne supposez pas que les gestionnaires d'événements sont terminés au moment où votre méthode retourne. (Et vice versa, bien sûr.)
  • Il y a toujours des différences dans la façon dont une interface graphique va apparaître. Les mises en page ne sont pas toujours implémentées exactement de la même manière.
+0

J'ajouterais que vous ne devriez pas supposer que l'utilisateur de mac os x voudra utiliser GTK, et il y a ** des différences entre mac os x et windows avec wxWidgets. – Arafangion

1
  1. Vous devez prendre soin de la version Python vous développez contre. Surtout, sur un Mac, la version par défaut de Python installé avec le système d'exploitation, est assez ancien (bien sûr, les versions plus récentes peuvent être installées)

  2. Ne pas utiliser les bibliothèques spécifiques OS

  3. prendre des précautions particulières des éléments d'interface utilisateur "spéciaux", comme les icônes de la barre des tâches (fenêtres), ...

  4. Utilisez les barres obliques lors de l'utilisation de chemins, évitez C: /,/home/..., ... Utilisez os.path pour travailler avec des chemins.

+1

n'utilisez pas les barres obliques - utilisez os.sep à la place, tout ne fonctionne pas correctement avec les barres obliques – Moe

+0

Je préfère utiliser os.normpath() car il se normalisera entre autres avec os.sep. – Soviut

+0

D'accord, mon objectif était principalement de ne pas utiliser les barres obliques. – Moe

3

Certaines choses que j'ai remarqué dans mon développement de la plate-forme de croix en Python:

  • OSX ne dispose pas d'un plateau, de sorte que les notifications d'application se produisent généralement juste dans le dock. Ainsi, si vous créez un service de notification en arrière-plan, vous aurez peut-être besoin d'une petite quantité de code spécifique à la plate-forme. Os12startfile() ne fonctionne apparemment que sous Windows. Soit cela ou Python 2.5.1 sur Leopard ne le supporte pas. Os.normpath() est quelque chose que vous pourriez envisager d'utiliser aussi, juste pour garder vos chemins et volumes en utilisant la notation de barre oblique et les noms de volume corrects.
  • Windows et OSX, assurez-vous de fournir des icônes à toutes les tailles (16x16, 24x24, 32x32, 48x48, 64x64, 128x128 et 256x256) et soyez sûr de lire sur mettre en place des icônes avec des widgets wx.
0

Problèmes de nom de fichier: This.File et this.file sont des fichiers différents sur Linux, mais pointent vers le même fichier sous Windows.Inquiétant si vous gérez un référentiel de fichiers et y accédez depuis les deux plates-formes. Problème connexe moins fréquent est celui des noms comme NUL ou LPT étant des fichiers sur Windows.

Le code de distribution binaire (le cas échéant) utiliserait probablement py2exe sur Win, py2app sur Mac et ne serait pas présent sur Linux.

+0

pyInstaller peut être utilisé pour créer des exe compatibles Windows et Linux alors que py2app fonctionne pour mac. – Soviut

Questions connexes