Python и разные операционные системы

Я собираюсь начать личный проект с использованием python, и я буду использовать его как в Linux (Fedora), так и в Windows (Vista), хотя я мог бы также заставить его работать на Mac, пока я на нем. Я нашел API для графического интерфейса, который будет работать на всех 3. Причина, по которой я спрашиваю, состоит в том, что я всегда слышал о небольших различиях, которых легко избежать, если вы знаете о них до начала. Есть ли у кого-нибудь какие-нибудь советы или предложения по этому поводу?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
893
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

В общем:

  • Будьте осторожны с дорожками. По возможности используйте os.path.
  • Не думайте, что HOME указывает на домашний каталог / каталог пользователя.
  • Избегайте использования таких вещей, как сокеты домена unix, FIFO и другие специфичные для POSIX вещи.

Более конкретные вещи:

  • Если вы используете wxPython, обратите внимание, что могут быть различия в вещах, например, в том, в каком потоке генерируются определенные события. Не предполагайте, что события генерируются в конкретном потоке. Если вы вызываете метод, который запускает событие графического интерфейса пользователя, не предполагайте, что обработчики событий завершили работу к тому времени, когда ваш метод вернется. (И наоборот, конечно.)
  • Всегда есть различия в том, как будет выглядеть графический интерфейс. Макеты не всегда реализуются одинаково.

Я бы добавил, что вы не должны предполагать, что пользователь mac os x захочет использовать GTK, и есть различия находятся между mac os x и окнами с wxWidgets.

Arafangion 07.07.2011 09:17
  1. Вам следует позаботиться о версии Python, для которой вы разрабатываете. В частности, на Mac версия Python по умолчанию, установленная вместе с ОС, довольно старая (конечно, могут быть установлены более новые версии).

  2. Не используйте библиотеки, специфичные для ОС

  3. Позаботьтесь о «особых» элементах пользовательского интерфейса, таких как значки на панели задач (окна) и т. д.

  4. Используйте косую черту при использовании путей, избегайте C: /, / home / ..., ... Используйте os.path для работы с путями.

не используйте косую черту - вместо этого используйте os.sep, не все в Windows работает должным образом с косой чертой

Moe 08.01.2009 21:59

Я предпочитаю использовать os.normpath (), поскольку он, помимо прочего, нормализуется к тому, что есть os.sep.

Soviut 08.01.2009 22:00

Еще лучше вообще избегать косых черт и использовать os.path.join

dF. 09.01.2009 03:46

Некоторые вещи, которые я заметил при разработке кроссплатформенных программ на Python:

  • OSX не имеет лотка, поэтому уведомления приложений обычно появляются прямо в доке. Поэтому, если вы создаете службу фоновых уведомлений, вам может потребоваться небольшой объем кода для конкретной платформы.
  • os.startfile (), по-видимому, работает только в Windows. Либо это, либо Python 2.5.1 на Leopard его не поддерживает.
  • os.normpath () - это то, что вы, возможно, захотите использовать, просто чтобы ваши пути и тома использовали правильную нотацию косой черты и имена томов.
  • Значки обрабатываются принципиально по-разному в Windows и OSX, убедитесь, что вы предоставили значки всех правильных размеров для обоих (16x16, 24x24, 32x32, 48x48, 64x64, 128x128 и 256x256) и обязательно прочтите о настройке значков. с виджетами wx.

Некоторые проблемы с именами файлов: This.File и this.file - это разные файлы в Linux, но указывают на один и тот же файл в Windows. Утомительно, если вы управляете каким-то файловым хранилищем и получаете к нему доступ с обеих платформ. Менее частая проблема связана с именами, такими как NUL или LPT, которые являются файлами в Windows.

Двоичный код распространения (если есть), скорее всего, будет использовать py2exe в Win, py2app на Mac и не будет присутствовать в Linux.

pyInstaller можно использовать для создания исполняемых файлов, совместимых с Windows и Linux, в то время как py2app работает для Mac.

Soviut 08.01.2009 23:35

Другие вопросы по теме