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
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.
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)
Ne pas utiliser les bibliothèques spécifiques OS
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), ...
Utilisez les barres obliques lors de l'utilisation de chemins, évitez C: /,/home/..., ... Utilisez os.path pour travailler avec des chemins.
n'utilisez pas les barres obliques - utilisez os.sep à la place, tout ne fonctionne pas correctement avec les barres obliques – Moe
Je préfère utiliser os.normpath() car il se normalisera entre autres avec os.sep. – Soviut
D'accord, mon objectif était principalement de ne pas utiliser les barres obliques. – Moe
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.
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.
pyInstaller peut être utilisé pour créer des exe compatibles Windows et Linux alors que py2app fonctionne pour mac. – Soviut
- 1. Construction identique sur différents systèmes
- 2. Dépendances de DLL - différentes sur différents systèmes?
- 3. WCF et systèmes embarqués
- 4. expressions régulières et de multiples systèmes d'écriture
- 5. comparaison des types différents en python
- 6. Comment traitez-vous le déploiement de fichiers de configuration sur différents systèmes dans Subversion?
- 7. Où puis-je connaître les avantages et les inconvénients des différents systèmes de contrôle de source disponibles?
- 8. Base de données de conception: fusionner les utilisateurs de différents systèmes de journalisation (google, facebook, openid ...)
- 9. Identifier les différents téléphones mobiles et rediriger vers différents sites
- 10. Systèmes distribués, meilleur cadre?
- 11. C# HttpRequest et différents encodages
- 12. Synchroniser le GAC sur plusieurs systèmes
- 13. Analyser différents formats de date de feedparser en python?
- 14. Communication inter-processus entre langages/systèmes d'exploitation
- 15. IDLE et Python ont des chemins différents sous Mac OS X
- 16. Migration vers des systèmes ouverts
- 17. Confusion sur le chemin Python dans le shell Python vs serveur FCGI: Pourquoi sont-ils différents?
- 18. Systèmes métriques de codes disponibles?
- 19. Introduction aux systèmes d'algèbre informatique?
- 20. décorateurs et méthodes python
- 21. Comment intégrer au mieux plusieurs systèmes?
- 22. Plusieurs applications en plusieurs langues sur différents systèmes d'exploitation. Dois-je essayer un harnais de test unifié?
- 23. Assembly.GetType() et typeof() retournent des types différents?
- 24. HttpHandlers personnalisés et différents types de gestionnaires
- 25. Lire CSV et créer des tableaux différents
- 26. Routes Rails et différents modèles XML
- 27. boost :: spirit et générer différents nœuds
- 28. Biztalk alternative pour l'automatisation de la gestion des systèmes?
- 29. Même .vimrc, deux ordinateurs différents
- 30. Aide avec l'application Django et les systèmes de paiement (requêtes générales)
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