Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Вопрос по python!  (Прочитано 1375 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн merlin1

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Вопрос по python!
« : 10 Июля 2014, 16:51:43 »
Ребят, кто подскажет Чайнику? Хочу начать изучать Питон...только мне не очень хочется все скрипты делать в Командной строке. Может кто-нибудь подскажет, что нужно сделать, чтобы на локальном сервере отображались эти python-скрипты? Или если не на сервере, то просто при нажимании на файл(кстати, какое расширение ему давать pl или py?) скрипт начал работать показывая результат работы.Спасибо

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #1 : 10 Июля 2014, 18:07:20 »
Цитировать
только мне не очень хочется все скрипты делать в Командной строке.

Дам вам совет - привыкайте к командной строке. Считайте это частью обучения Питону. Потом скажете спасибо. И взаимодействовать с командной строкой намного проще чем с графическим интерфейсом, но если же вы преследуете цель именно работы с графическим интерфейсов, то для питона существует огромное количество API для работы с графическим интерфейсом, как пример, наиболее распостраненные PyGTK или PyQT:

http://www.micahcarrick.com/gtk3-python-hello-world.html
http://python-gtk-3-tutorial.readthedocs.org/en/latest/
http://www.riverbankcomputing.co.uk/software/pyqt/intro

Питоновские скрипты имеют расширения py, pl это Perl.
Для того чтобы файл выполнялся "по нажатию", ему необходимо дать права на выполнения и указать Shebang (#!/usr/bin/env python) первой строкой скрипта:

chmod a+x ./file.py

Содержимое file.py:
Код: (python) [Выделить]
#!/usr/bin/env python

from gi.repository import Gtk, Gio

class HelloWorldApp(Gtk.Application):
    def __init__(self):
        Gtk.Application.__init__(self, application_id="apps.test.helloworld",
                                 flags=Gio.ApplicationFlags.FLAGS_NONE)
        self.connect("activate", self.on_activate)
       
    def on_activate(self, data=None):
        window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL)
        window.set_title("Gtk3 Python Example")
        window.set_border_width(24)
        label = Gtk.Label("Hello World!")
        window.add(label)
        window.show_all()
        self.add_window(window)
   
if __name__ == "__main__":
    app = HelloWorldApp()
    app.run(None)

Оффлайн merlin1

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #2 : 10 Июля 2014, 18:25:03 »
Огромное спасибо!!!
А что на счет python на сервер? Есть может быть какие-то программы для этого?

Пользователь решил продолжить мысль 10 Июля 2014, 18:27:33:
Цитировать
И взаимодействовать с командной строкой намного проще чем с графическим интерфейсом
Когда писал я имел ввиду, что мне хочется написать например какой-нибудь скрипт и чтобы он был полностью готов для использование на других компьютеров. Это как-то возможно?
« Последнее редактирование: 10 Июля 2014, 18:27:33 от merlin1 »

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #3 : 10 Июля 2014, 18:39:09 »
Цитировать
Когда писал я имел ввиду, что мне хочется написать например какой-нибудь скрипт и чтобы он был полностью готов для использование на других компьютеров. Это как-то возможно?

Для того чтобы скрипт исполнялся на других компьютерах, необходимо чтобы на других компьютерах был установлен интерпретатор Python, и дополнительные библиотеки, если таковые используются в скрипте. В большинстве популярных Linux систем интерпретатор Python уже установлен по умолчанию.

Оффлайн merlin1

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #4 : 10 Июля 2014, 18:48:26 »
Cпасибо)))А что на счет питона под WEB?

Оффлайн .ubuntufan

  • Активист
  • *
  • Сообщений: 638
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #5 : 10 Июля 2014, 19:02:39 »
Уточни что конкретно имеешь ввиду?
Любой скрипт умеющий принимать в STDIN HTTP-запрос и отправлять в STDOUT HTTP-ответ, может использоваться в веб разработке. Но в этом плане, конечно, лучше воспользоваться готовыми решениями, такими как например библиотеки, реализующие WSGI и иные веб-протоколы. И таких библиотек для Питона много:

Flask, Django, Tornado и т.д, все зависит от того что конкретно ты пишешь.

Оффлайн merlin1

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #6 : 12 Июля 2014, 11:42:09 »
Подскажите, как сделать русскую кодировку?
SyntaxError: Non-ASCII character '\xd0' in file s.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

Оффлайн alsoijw

  • Старожил
  • *
  • Сообщений: 4062
  • Fedora 25 GNOME 3 amd64
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #7 : 12 Июля 2014, 13:23:12 »
merlin1, любой нормальный скрипт надо начинать с
Код: (python) [Выделить]
#!usr/bin/env python
#-*- coding:utf-8 -*-
Мало видеть нам начало - надо видеть и конец. Если видишь ты создание - значит где-то есть ТВОРЕЦ
Многие жалуются: геометрия в жизни не пригодилась. Ямб от хорея им приходится отличать ежедневно?

Оффлайн merlin1

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #8 : 12 Июля 2014, 15:12:56 »
Может мне кто-нибудь ответить: как сделать так, чтобы на сервере (LAMP) начали работать python-скрипты? Куда нужно разместить файлы и что нужно изменить?

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Re: Вопрос по python!
« Ответ #9 : 14 Июля 2014, 12:20:51 »
LAMP - это технология, имеющая в составе:
Linux,
Apache - веб-сервер,
MySQL - сервер,
PHP - набор интерфейсов php, подготовленных для встройки в Apache.
Как видите сами, интерфейса питон WSGI для встраивания в Apache здесь нет.

Если Ваш сервер будет размещен у себя на сервере, то можно делать все, что хотите. Я бы просто отказался от Apache и развернул Flask. Он все сделает, что нужно.

А если Ваш сервер будет размещен у какого-то дяди на сервере, то надо поинтересоваться будет ли поддерживать WSGI c питоном. Если нет, то придется писать на php.

Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 12139
  • Xubuntu 22.04
    • Просмотр профиля
    • Github
Re: Вопрос по python!
« Ответ #10 : 14 Июля 2014, 14:03:34 »
Подскажите, как сделать русскую кодировку?
SyntaxError: Non-ASCII character '\xd0' in file s.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details


К тому, что написал alsoijw, могу добавить: В python 2.7 работа с Unicode - довольно заморочное дело.
Дело в том, что там многие функции возвращают бинарную последовательность (чтение из потока/файла). И пока она не содержит символов отличных от ASCII с ней можно легко комбинировать строки, причем строки в любой кодировке (бинарный массив просто закодируется в кодировку строки, когда окажется как то связанным в операции со строкой). Причем с точки зрения функционала бинарный массив и строка - обрабатываются полностью идентично (применимы одинаковые методы и операторы). Но вот то самое неявное кодирование бинариков в кодировку строки и рождает ошибку которую вы привели.
Причем даже строки в python 2.7 могут быть (автоматом подразумеваться) в разных кодировках. И даже спайка английского слова с русским - может выстрелить такой "бякой" как в примере.

Python3 четко разделяет бинарные и строковые данные (с бинарными массивами набор операций и методов крайне ограничен, ничего "строко-ориентированного" с байтовой последовательностью не сделать). Зато строки все уже по умолчанию в Unicode.

Для Python 2.7 изучайте плотно методы .decode() и .encode().
Для Python3 - обращайте внимание на методы открытия потоков/файлов - если вы их открываете как текстовые - чтение оттуда будет в виде строки, иначе как байтовая последовательность (практически неоперабельная вещь в Python3).
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: https://help.ubuntu.ru/wiki/uefiboot

 

Страница сгенерирована за 0.018 секунд. Запросов: 21.