Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Python в браузере: как выбрать между Brython, PyPy.js, Skulpt и Transcrypt? Браузер python


Пишем Webkit браузер на Python

In this tutorial we’ll create simple web browser using Python PyQt framework. As you may know PyQt is a set of Python bindings for Qt framework, and Qt (pronounced cute) is C++ framework used to create GUI-s. To be strict you can use Qt to develop programs without GUI too, but developing user interfaces is probably most common thing people do with this framework. Main benefit of Qt is that it allows you to create GUI-s that are cross platform, your apps can run on various devices using native capabilities of each platform without changing your codebase.

Qt comes with a port of webkit, which means that you can create webkit-based browser in PyQt.

Our browser will do following things:

  • load urls entered by user into input box
  • show all requests performed while rendering the page
  • allow you to execute custom JavaScript in page context

Hello Webkit

Let’s start with simplest possible use case of PyQt Webkit: loading some url, opening window and rendering page in this window.

This is trivial to do, and requires around 13 lines of code (with imports and whitespace):

import sys from PyQt4.QtWebKit import QWebView from PyQt4.QtGui import QApplication from PyQt4.QtCore import QUrl app = QApplication(sys.argv) browser = QWebView() browser.load(QUrl(sys.argv[1])) browser.show() app.exec_()

If you pass url to script from command line it should load this url and show rendered page in window.

At this point you maybe have something looking like command line browser, which is already better than python-requests or even Lynx because it renders JavaScript. But it’s not much better than Lynx because you can only pass urls from command line when you invoke it. We definitely need some way of passing urls to load to our browser.

Add address bar

To do this we’ll just add input box at the top of the window, user will type url into text box, browser will load this url. We will use QLineEdit widget for input box. Since we will have two elements (text input and browser frame), we’ll need to add some grid layout to our app.

import sys from PyQt4.QtGui import QApplication from PyQt4.QtCore import QUrl from PyQt4.QtWebKit import QWebView from PyQt4.QtGui import QGridLayout, QLineEdit, QWidget class UrlInput(QLineEdit): def __init__(self, browser): super(UrlInput, self).__init__() self.browser = browser # add event listener on "enter" pressed self.returnPressed.connect(self._return_pressed) def _return_pressed(self): url = QUrl(self.text()) # load url into browser frame browser.load(url) if __name__ == "__main__": app = QApplication(sys.argv) # create grid layout grid = QGridLayout() browser = QWebView() url_input = UrlInput(browser) # url_input at row 1 column 0 of our grid grid.addWidget(url_input, 1, 0) # browser frame at row 2 column 0 of our grid grid.addWidget(browser, 2, 0) # main app window main_frame = QWidget() main_frame.setLayout(grid) main_frame.show() # close app when user closes window sys.exit(app.exec_())

At this point you have bare-bones browser that shows some resembrance to Google Chrome and it uses same rendering engine. You can enter url into input box and your app will load url into browser frame and render all HTML and JavaScript.

Of course the most interesting and important part of every browser are its dev tools. Every browser worth its name should have its developer console. Our Python browser should have some developer tools too.

Let’s add something similar to Chrome “network” tab in dev tools. We will simply keep track of all requests performed by browser engine while rendering page. Requests will be shown in table below main browser frame, for simplicity we will only log url, status code and content type of responses.

Do do this we will need to create a table first, we’ll use QTableWidget for that, header will contain field names, it will auto-resize each time new row is added to table.

class RequestsTable(QTableWidget): header = ["url", "status", "content-type"] def __init__(self): super(RequestsTable, self).__init__() self.setColumnCount(3) self.setHorizontalHeaderLabels(self.header) header = self.horizontalHeader() header.setStretchLastSection(True) header.setResizeMode(QHeaderView.ResizeToContents) def update(self, data): last_row = self.rowCount() next_row = last_row + 1 self.setRowCount(next_row) for col, dat in enumerate(data, 0): if not dat: continue self.setItem(last_row, col, QTableWidgetItem(dat))

To keep track of all requests we’ll need to get bit deeper into PyQt internals. Turns out that Qt exposes NetworkAccessManager class as an API allowing you to perform and monitor requests performed by application. We will need to subclass NetworkAccessManager, add event listeners we need, and tell our webkit view to use this manager to perform its requests.

First let’s create our network access manager:

class Manager(QNetworkAccessManager): def __init__(self, table): QNetworkAccessManager.__init__(self) # add event listener on "load finished" event self.finished.connect(self._finished) self.table = table def _finished(self, reply): """Update table with headers, status code and url. """ headers = reply.rawHeaderPairs() headers = {str(k):str(v) for k,v in headers} content_type = headers.get("Content-Type") url = reply.url().toString() # getting status is bit of a pain status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute) status, ok = status.toInt() self.table.update([url, str(status), content_type])

I have to say that some things in Qt are not as easy and quick as they should be. Note how awkward it is to get status code from response. You have to use response method .attribute() and pass reference to class property of request. This returns QVariant not int and when you convert to int it returns tuple.

Now finally we have a table and a network access manager. We just need to wire all this together.

if __name__ == "__main__": app = QApplication(sys.argv) grid = QGridLayout() browser = QWebView() url_input = UrlInput(browser) requests_table = RequestsTable() manager = Manager(requests_table) # to tell browser to use network access manager # you need to create instance of QWebPage page = QWebPage() page.setNetworkAccessManager(manager) browser.setPage(page) grid.addWidget(url_input, 1, 0) grid.addWidget(browser, 2, 0) grid.addWidget(requests_table, 3, 0) main_frame = QWidget() main_frame.setLayout(grid) main_frame.show() sys.exit(app.exec_())

Now fire up your browser, enter url into input box and enjoy the view of all requests filling up table below webframe.

If you have some spare time you could add lots of new functionality here:

  • add filters by content-type
  • add sorting to table
  • add timings
  • highlight requests with errors (e.g. show them in red)
  • show more info about each request - all headers, response content, method
  • add option to replay requests and load them into browser frame, e.g. user clicks on request in table and this url is loaded into browser.

This is long TODO list and it would be probably interesting learning exercise to do all these things, but describing all of them would probably require to write quite a long book.

Add way to evaluate custom JavaScript

Finally let’s add one last feature to our experimental browser - ability to execute custom JavaScipt in page context.

After everything we’ve done earlier this one comes rather easily, we just add another QLineEdit widget, connect it to web page object, and call evaluateJavaScript method of page frame.

class JavaScriptEvaluator(QLineEdit): def __init__(self, page): super(JavaScriptEvaluator, self).__init__() self.page = page self.returnPressed.connect(self._return_pressed) def _return_pressed(self): frame = self.page.currentFrame() result = frame.evaluateJavaScript(self.text())

then we instantiate it in our main clause and voila our dev tools are ready.

if __name__ == "__main__": # ... # ... page = QWebPage() # ... js_eval = JavaScriptEvaluator(page) grid.addWidget(url_input, 1, 0) grid.addWidget(browser, 2, 0) grid.addWidget(requests_table, 3, 0) grid.addWidget(js_eval, 4, 0)

Now the only thing missing is ability to execute Python in page context. You could probably develop your browser and add support for Python along JavaScript so that devs writing apps targeting your browser could.

Moving back and forth, other page actions

Since we already connected our browser to QWebPage object we can also add other actions important for end users. Qt web page object supports lots of different actions and you can add them all to your app.

For now let’s just add support for “back”, “forward” and “reload”. You could add those actions to our GUI by adding buttons, but it will be easier to just add another text input box.

class ActionInputBox(QLineEdit): def __init__(self, page): super(ActionInputBox, self).__init__() self.page = page self.returnPressed.connect(self._return_pressed) def _return_pressed(self): frame = self.page.currentFrame() action_string = str(self.text()).lower() if action_string == "b": self.page.triggerAction(QWebPage.Back) elif action_string == "f": self.page.triggerAction(QWebPage.Forward) elif action_string == "s": self.page.triggerAction(QWebPage.Stop)

just as before you also need to create instance of ActionInputBox, pass reference to page object and add it to our GUI grid.

Full result should look somewhat like this:

For reference here’s code for final result

pythondigest.ru

python - Как я могу открыть веб-сайт в своем веб-браузере с помощью Python?

Как указано в инструкции, использование функции open() действительно работает и открывает веб-браузер по умолчанию - обычно я бы сказал: "Почему бы мне не использовать Firefox?!" (мой по умолчанию и любимый браузер)

import webbrowser as wb wb.open_new_tab('http://www.google.com')

Вышеупомянутое должно работать для браузера по умолчанию для компьютера. Однако, что, если вы хотите открыть в Google Chrome?

Правильный способ сделать это:

import webbrowser as wb wb.get('chrome %s').open_new_tab('http://www.google.com')

Честно говоря, я не уверен, что знаю разницу между "chrome" и "google-chrome", но, видимо, есть некоторые, поскольку они вносят два разных типа в документацию webbrowser.

Однако для меня это не сработало. Каждый раз я получаю ошибку:

Traceback (most recent call last): File "C:\Python34\programs\a_temp_testing.py", line 3, in <module> wb.get('google-chrome') File "C:\Python34\lib\webbrowser.py", line 51, in get raise Error("could not locate runnable browser") webbrowser.Error: could not locate runnable browser

Чтобы решить эту проблему, мне пришлось добавить папку для chrome.exe в System PATH. Мой исполняемый файл chrome.exe находится по адресу:

C:\Program Files (x86)\Google\Chrome\Application

Вы должны проверить, есть ли это здесь или нет для себя.

Чтобы добавить это в переменную System PATH, щелкните правой кнопкой мыши значок Windows и перейдите в систему. Апплет System Control Panel (Пуск - Настройки - Панель управления - Система). Измените дополнительные параметры или вкладку "Дополнительно" и выберите кнопку, которая называется Environment Varaibles.

Как только вы нажмете на переменные среды здесь, появится другое окно. Пролистайте элементы, выберите PATH и нажмите "Изменить".

После того, как вы здесь, нажмите "Создать", чтобы добавить путь к папке в файл chrome.exe. Как я сказал выше, мой был найден по адресу:

C:\Program Files (x86)\Google\Chrome\Application

Нажмите "Сохранить" и выйдите из него. Затем убедитесь, что вы перезагрузите компьютер.

Надеюсь, это поможет!

qaru.site

python - Python в браузере: как выбрать между Brython, PyPy.js, Skulpt и Transcrypt?

Вот некоторая информация о Brython vs Transcrypt (июль 2016 года, так как Transcrypt был добавлен в качестве опции по этому вопросу OP), почерпнутый, начав проект с Brython несколько месяцев назад и перейдя в Transcrypt (завершено перемещение на прошлой неделе). Мне нравятся Brython и Transcrypt, и я вижу их использование для обоих.

Для людей, которые не знакомы с этим, Brython и Transcrypt используют как "transpile" вход для python для javascript (Edit: возможно, лучше просмотреть Brython как "реализацию Python для браузера", потому что он не создает автономный javascript), Оба требуют синтаксиса Python 3. Brython включает значительное количество стандартных библиотек Python и некоторые из них для работы с веб-вещами, в то время как Transcrypt избегает этого в большинстве случаев и предлагает использовать библиотеки JavaScript.

Brython (Github) может выполните преобразование в браузере. Таким образом, вы пишете на python, а движок brython.js преобразует его в javascript на лету, когда загружается страница. Это действительно удобно и намного быстрее, чем вы думаете. Тем не менее, движок brython.js, который вам нужно включить в ваши страницы, составляет около 500 КБ. Кроме того, возникает вопрос об импорте стандартных библиотек, которые Brython обрабатывает, выбирая отдельные файлы .js с запросами XHR. Некоторые библиотеки уже скомпилированы в brython.js, поэтому не каждый импорт будет загружать новые файлы, но если вы используете много импорта, все может замедляться. Однако есть способы обойти это. Что я сделал, это проверить вкладку сети в инструментах браузера dev, чтобы посмотреть, какие файлы были вытащены при загрузке страницы, а затем удалить все файлы, которые мой проект не использовал в копии папки Brython src, и запустить script, входящий в состав Brython (я думаю, это на Brython/www/scripts/make_VFS.py), который компилирует все доступные библиотеки в один файл с именем py_VFS.js, который вам нужно также связать с вашим html. Обычно он создает один огромный файл размером 2 МБ +, но если вы удаляете то, что не используете, оно может быть довольно маленьким. Выполнение этого способа означает, что вам нужно всего лишь вытащить brython.js, py_VFS.js и ваш код на Python, и никаких дополнительных запросов XHR не потребуется.

Transcrypt (Github) на с другой стороны, распространяется как пакет python 3, который вы можете использовать вручную или зацепить в свою инструментальную цепочку, чтобы заранее скомпилировать python для javascript. Итак, с Transcrypt вы пишите в python, запускаете транскрипцию с питоном, и он выплевывает javascript, с которым вы можете ссылаться в своем проекте. Это больше похоже на традиционный компилятор и на то, что он предлагает некоторый контроль над выходом. Например, вы можете выбрать компиляцию на ES6 или ES5 или попросить его вывести исходные карты (что во время отладки позволяет браузеру перейти непосредственно к соответствующему коду питона, введя сгенерированный код javascript.) Вывод Transcrypt javascript довольно короткий ( или по-другому, это довольно и красно). В моем случае 150kB python преобразуется в 165kB unminified ES5 javascript. Для сравнения, версия моего проекта Brython использовала около 800 КБ после преобразования.

Однако, получая преимущества транскрипции, требуется чтение документов немного (на самом деле немного). Например, с Transcrypt, "правдоподобие" Python для структур данных, таких как dict, set и list, не включается по умолчанию и в глобальном масштабе, это обескураживает из-за потенциальных проблем производительности, связанных с проверкой typechecking. Для ясности: в CPython пустой dict, set или list имеет значение истинности False, тогда как в Javascript он считается "истинным". Пример:

myList = [] if myList: # False in CPython bcs it empty, true in javascript bcs it exists # do some things.

Существует по крайней мере три способа решить эту проблему:

  • Используйте флаг -t при преобразовании python в javascript, например: $transcrypt -t python.py(не рекомендуется, но, вероятно, это не проблема, если вы не проверяете правдивость много раз во внутренних циклах кода, чувствительного к производительности).
  • Используйте __pragma__(tconv) или __pragma__(notconv) в своем коде, чтобы сообщить компилятору транскопа включить автоматическое преобразование в значения правды, подобные питону, локально.
  • Вместо того, чтобы проверять значение истины, вообще избегайте проблемы, просто проверяя len (myList) > 0... Может быть, это будет хорошо для большинства ситуаций, делает работу для моего использования.

Правильно, поэтому мой проект становился все больше, и я хотел предварительно скомпилировать его для увеличения производительности, но с Brython было сложно это сделать (хотя это технически возможно, простой способ использовать онлайн-редактор и нажмите кнопку javascript, чтобы увидеть результат). Я сделал это и связался с сгенерированным javascript из project.html, но по какой-то причине он не работал. Кроме того, мне трудно понять сообщения об ошибках от Brython, поэтому я не знал, с чего начать после этого шага. Кроме того, большой размер выведенного кода и размер движка brython начинаются с меня. Поэтому я решил поближе познакомиться с Transcrypt, который сначала казался более высоким, потому что я предпочитаю инструкции, которые подсказывают мне, как начать работу сразу (с тех пор они были добавлены).

Главное, что он установил после установки Python3.5, было: 1) использовать venv (он как новая встроенная версия virtualenv, которая использует меньше места для каждого проекта) для настройки папки проекта python3.5 (просто type: python3.5 -m venv foldername - обходной путь для ubuntu с проблемами пакета для 3.5). Это делает "имя папки" с подпапкой bin среди прочего. 2) установите пакет Transcrypt python с pip ('foldername/bin/pip install transcrypt'), который устанавливает его в папку имя /lib/python 3.5/site-packages/transcrypt. 3) "активировать" текущий терминал, если вы не хотите вводить полный путь к имени папки /bin/python 3.5 каждый раз. Активировать, набрав: 'source foldername/bin/activate' 4) начать писать код и скомпилировать его в javascript для тестирования. Компиляция из папки, в которую вы вписываете свой код. Например, я использовал имя папки /www/project. Итак, CD в эту папку и запустите: 'transcrypt -b your_python_script.py'. Это помещает вывод в подпапку под названием __javascript__. Затем вы можете подключиться к выведенному javascript из вашего html.

Основные проблемы, перемещающиеся по

У меня довольно простые потребности, поэтому ваш пробег может меняться.

  • Вам нужно заменить стандартные библиотеки brython или python на javascript libs. Так, например, "import json" предоставляется Brython, но в Transcrypt вы можете использовать javascript lib или просто использовать JSON.parse/JSON.stringify непосредственно в вашем коде Python. Чтобы включить мини-версию javascript-библиотеки непосредственно в ваш код python, используйте этот формат (обратите внимание на тройные кавычки):

    __pragma__ ('js', '{}', ''' // javascript code ''')

  • Конкретные функции Brython html, очевидно, не работают с Transcrypt. Просто используйте обычные способы javascript. Примеры: 1) под Brython вы могли ссылаться на определенный тег HTML, используя 'document [' id ']', но с Transcrypt вы бы использовали 'document.getElementById(' id ') (что так же, как вы это делаете это из javascript). 2) Вы не можете удалить node с 'del nodeName' (bcs, который выполняет функцию brython). Используйте что-то вроде node.parentNode.removeChild(node) '. 3) замените все функции DOM brython на альтернативы javascript. например class_name = className; text = textContent; html = innerHTML; parent = parentNode; children = childNodes и т.д. Я думаю, если вам нужно что-то, что содержит альтернативы, требуемые некоторыми более старыми браузерами, тогда для этого есть библиотеки javascript. 4) Brython set_timeout заменяется на javascripts setTimeout 5) Brython html теги, такие как BR(), нужно заменить обычными способами javascript, а также переделать все места, в которых вы использовали синтаксис <= dom. Либо введите текстовую разметку как innerHTML, либо создайте элементы, используя синтаксис javascript, а затем присоедините их, используя обычный синтаксис DOM javascript. Я также заметил, что для флажков brython использует "if checkbox = 'checked": "но Transcrypt доволен", если флажок: "..

  • Я закончил продвигать проект на 2700 строк на прошлой неделе, когда Transcrypt не поддерживал несколько незначительных вещей (хотя их было достаточно легко заменить наполнителями), это были 1) str.lower, str.split(str.split присутствует, но, похоже, это javascript split, который работает по-разному с версией python, поведение которой я полагался), 2) раунд (это, похоже, теперь поддерживается в dev-версии ) и 3) isststance не работал на str, int и float, только на dict, list и set. 4) Еще одно отличие от Brython, которое я заметил, заключается в том, что если я вытащил JSON-представление dict, мне нужно сделать это, используя myDict = dict (data) ', тогда как brython был доволен' myDict = data '. Но это может быть связано с чем-то в Brython json.loads, которое я заменил непосредственно на JSON.parse. 5) Также без специально включенной перегрузки оператора Transcrypts (с использованием -o-переключателя для global или __pragma__('opov') для локального) вы не можете делать такие вещи, как задание операций с использованием перегруженного формата, но должны использовать соответствующие функции. Например.

    a = set([1, 2, 3]) b = set([3, 4, 5]) a.difference(b) # is used instead of a - b a.union(b) # used instead of a | b a.intersection(b) # used instead of a & b a.symmetric_difference(b) # used instead of a ^ b

6) Кроме того, вы не можете итерировать dicts по умолчанию, используя 'for я in dict:', без включения этого (cmd line -i или __pragma__('iconv'), но вы можете не включать его, просто используя клавиши(), например:

for key, value in dict.items(): # do things for each key and value..

Подводя итоги

  • Мне нравится Brython, потому что с ним легко справиться и проверить свой код (просто F5). Это ближе к истинному питону, потому что большая часть стандартной библиотеки есть. Мне не нравится включать механизм транспиляции (Edit: Или можно просмотреть его как виртуальную машину python) в браузере и большой размер выведенного javascript. Если бы я должен был что-то делать (но все-таки использовал Brython), я бы использовал javascript-методы для управления DOM из brython (что вы можете сделать..), вместо того, чтобы так много наклоняться на методы brython, потому что это потраченное время переместилось через к другому транспилеру, когда мои потребности изменились.

  • Мне нравится Transcrypt, потому что выведенный javascript действительно "худой и средний", и поскольку единственная вещь, на которую вы загружаете браузер, - это ваш сгенерированный код javascript, который похож по размеру на ваш код на Python. Также потому, что он поддерживает sourcemaps и потому что он дает мне контроль над выведенным javascript. И использование этого объясняло мне немного о оптимизации.

Надеюсь, что кто-то поможет, кто из них может быть полезен для своего конкретного проекта.

qaru.site

browser Ru Python

Легкий рендеринг HTML с CSS в Python

Извините, возможно, я не впервые описал проблему в первый раз. Все ваши ответы интересны, но большинство из них – полнофункциональные веб-браузеры, моя задача намного проще. Я планирую написать приложение GUI, используя один из доступных в linux графических интерфейсах (я еще не выбрал один). Я буду использовать html в своем приложении для рендеринга в один из […]

Python: generic webbrowser.get (). Open () для chrome.exe не работает

Я нахожусь на Python 2.7 (Win 8.1 x64), и я хочу открыть URL-адрес в Chrome. Поскольку Chrome поддерживается только в 3.3+, я пытался использовать общий вызов: import webbrowser webbrowser.get("C:\Program Files (x86)\Google\Chrome\Application\chrome.exe %s").open("http://google.com") Путь правильный, и печать дает мне обработчик: "<webbrowser.GenericBrowser object at 0x0000000002D26518\>" Однако функция open () – предпочтительно open_new_tab ()) не работает. Он возвращает […]

Можно ли «перевести» сеанс между selenium.webdriver и request.session

Теоретически, если я webdriver все файлы cookie из объекта webdriver selenium в webdriver , будут ли запросы продолжать, как если бы сеанс не прерывался? В частности, меня интересует автоматизация записи, когда я попадаю в определенное место на веб-странице через selenium, а затем передаю определенную ссылку на скачивание, которая будет загружать и проверять конкретные байты из […]

Python в браузере: как выбрать между Brython, PyPy.js, Skulpt и Transcrypt?

Я очень рад видеть, что теперь можно закодировать Python в браузере. Это основные кандидаты (пожалуйста, добавьте все, что я, возможно, пропустил): бритт Skulpt PyPy.js Transcrypt Но как выбирать между ними? Единственное очевидное различие, которое я вижу, заключается в том, что Skulpt основан на Python 2, тогда как Brython основан на Python 3. Обратите внимание: это […]

Selenium / PhantomJS вызывает ошибку

Я пытаюсь запустить драйвер PhantomJS в Python, но я получаю ошибку. Я читал, что должен передать весь путь в качестве аргумента, но это не помогло. Вот код: from selenium import webdriver # driver = webdriver.Chrome('D:\Python_projects\chromedriver_win32/chromedriver.exe') # this works driver = webdriver.PhantomJS(executable_path='D:\Python\phantomjs-2.0.0-windows\bin\phantomjs.exe') ОШИБКА: Traceback (most recent call last): File "path to script", line 8, in <module> […]

Python / Selenium инкогнито / частный режим

Кажется, я не могу найти документацию о том, как заставить Selenium открывать браузер в режиме инкогнито. Нужно ли настраивать пользовательский профиль в браузере или?

Механизм и Javascript

Я хочу использовать Mechanize для имитации просмотра веб-страницы с активным JavaScript, включая DOM Events и AJAX, и до сих пор я не нашел способа сделать это. Я посмотрел на некоторые клиентские браузеры Python, которые поддерживают JavaScript, такие как Spynner и Zope, и никто из них действительно не работает для меня. Spynner постоянно терпит крах PyQt, […]

Python - лучший язык программирования в мире.

Copyright © Ru Python - All Rights Reserved.

www.rupython.com

Написать браузер на Python для Windows

Вопрос: Python FAQ: информация для новичков

Во многих других разделах уже есть такие темы. Надо бы догонять.

Для начала, хотелось бы немного рассказать о данном языке программирование (ЯП).Python (питон уж как-то прижилось в русском программистском сообществе, но правильнее будет пайтон) - язык с динамической типизацией данных, мальтипарадигмальный (т.е. поддерживает многие парадигмы программирования : процедурное, ООП, функциональное ( в той или иной мере, по мере изучения питона, многие поймут недостатки этого направления). Достоинства: - очень удобный синтаксис - скорость разработки - большое количество "сахара" от разработчиков языка - кроссплатформенность ( достаточно наличия необходимых библиотек и интерпретатора, что бы запустить вашу программу на другой ОС) - большое кол-во библиотек( пока тройку не трогаем), позволяет не изобретать велосипеды

Где используется? - Компания Google использует Python в своей поисковой системе и оплачивает труд создателя Python — Гвидо ван Россума - Такие компании, как Intel, Cisco, Hewlett-Packard, Seagate, Qualcomm и IBM, используют Python для тестирования аппаратного обеспечения - Служба коллективного использования видеоматериалов YouTube в значительной степени реализована на Python - NSA использует Python для шифрования и анализа разведданных - Компании JPMorgan Chase, UBS, Getco и Citadel применяют Python для прогнозирования финансового рынка - Популярная программа BitTorrent для обмена файлами в пиринговых сетях написана на языке Python - Популярный веб-фреймворк App Engine от компании Google использует Python в качестве прикладного языка программирования - NASA, Los Alamos, JPL и Fermilab используют Python для научных вычислений.

Литература: - Python. Подробный справочник, 4-е издание (Автор: Бизли Д.) - Программирование на Python, 4-е издание, I том (Автор: Лутц М.)( 4-е издание python 3, 3-e издание python 2.6, разницу попозже обсудим) - http://www.python.ru/files/book-ods.pdf

Сайты: - http://python.ru/ - http://python.su/ - Официальный сайт

Советы от себя лично: - Последнее время набирает обороты python 3. . Личный совет, для новичков особенно, не торопитесь садиться за python 3. Спокойно изучайте python 2.7-2.6, особо дискомфорта вы не почувствуете при переходе на python 3., но избавитесь от проблем ( отсутствие библиотек, одна из самых главных). - После изучения может возникнут вопрос: "А куда идти дальше?" После изучения синтаксиса, основных возможностей языка, могу посоветовать ресурс ( он про java and C#, выкиньте оттуда содержания про эти ЯП, и спокойно изучайте другое) сюда, там что примерно нужно знать ( основы ООП, основы SQL, и др.). Можно переключиться на изучение фреймворка django ( тут документация на русском, основные моменты + python сообщество) или допустим изучать GUI на python ( PyQt, TkInter не советую, устарело немного, но для новичков тоже подойдёт).

Что нужно для начало работы с python 2/3: 1) интерпретатор. Скачать можно тут. 2) текстовый блокнот ( или IDE) В принципе все. Все можно запускать из консоли. Пример (python 2.7):

Код Python
1 2 s = 'Hello, World' print s
1)Сохраняем скрипт:

2)Запускаем через консоль:

Вот и готово. Первая программа на python 2.7. Чтобы можно было работать в консоли, как описано во втором пункте, необходимо, чтобы python был в переменной окружения PATH.

Список IDE:

Eclipse

Eclipse: Бесплатная IDE. Написана на Java. Неплохая IDE. Большое количество плагинов для python (самые популярные pydev, aptana). Есть поддержка django. Из недостатков стоит отметить слабое автодополнение, немного тяжеловесная. Лично я на ней написал не один крупный проект. Больших нареканий не было. Присутствует отладчик.Скачать

IDLE

IDLE: Бесплатная IDE. Очень удобная для начинающих. Можно быстро написать элементарные скрипты. Большие проекты на ней проблемно писать правда. Присутствует отладчик, неплохое автодополнение в стиле linux консолей (можно через tab или подождать немного)Скачать (насколько мне известно она идёт уже вместе с интерпретатором, но в некоторых системах python уже вшит в систему без IDLE)

NetBeans

NetBens: Тоже бесплатная IDE, ничего плохо сказать лично не могу. Работал на ней мало. По впечатлению, местами может быть и помощнее Eclipse, но нет поддержки django (планируется в будущем). Присутствует отладчик.Скачать

PyCharm

PyCharm: Платная IDE, но на порядок мощнее NetBeans и Eclipse. Прекрасное автодополнение, хорошая подсветка синтаксиса, поддержка django, встроенная поддержка всевозможных SVN. И много другого приятного. ( на данный момент работаю на ней). Самый лучший отладчик из тех IDE на которых я работал с python ( сравним с VS)Скачать

Aptana Studio

Aptana Studio 3: Бесплатная IDE. Очень похожа на Eclipse. Плюсы и минусы те же. С Eclipse перешел на неё.Скачать

Visual Studio

Visual Studio 2010 + Plagin for Python Ничего не могу сказать. Зная VS думаю вещь очень и очень стоящая. Почитать тут.

Eric

Eric: Написанная на Python довольно функциональная среда разработки. Поддерживает разработку на Python и Ruby. Скачать

Очень часто встречаются проблемы с unicode строками в python( 2-ой ветке). Дабы избегать дальнейших вопрос, почитай статью.

Ребята, может надо что-то добавить, напишите сюда или в личку, если есть, добавлю. Или напишу.

Ответ: Информация для новичков, которым что-то нужно сделать с массивом - сложить элементы или ещё что-нибудь.В "чистом" Питоне НЕТ МАССИВОВ!Для массивов надо использовать дополнительные библиотеки, из которых самая популярная - numpy.

forundex.ru

как выбрать между Brython, PyPy.js, Skulpt и Transcrypt? Ru Python

Вот некоторая информация о Brython vs Transcrypt (июль 2016 года, так как Transcrypt был добавлен как опция по этому вопросу OP), почерпнутый, начав проект с Brython несколько месяцев назад и перейдя в Transcrypt (завершенное перемещение на прошлой неделе). Мне нравятся Brython и Transcrypt, и я вижу их использование для обоих.

Для людей, которые не знакомы с этим, Brython и Transcrypt используют как «transpile» вход для python для javascript (Edit: возможно, лучше рассматривать Brython как «реализацию Python для браузера», потому что он не создает автономный javascript). Оба требуют синтаксиса Python 3. Brython включает значительное количество стандартных библиотек Python и некоторые из них для работы с веб-вещами, в то время как Transcrypt избегает этого по большей части и предлагает вместо этого использовать библиотеки Javascript.

Brython ( Github ) может выполнить преобразование в браузере. Таким образом, вы пишете на python, а движок brython.js преобразует его в javascript на лету, когда загружается страница. Это действительно удобно и намного быстрее, чем вы думаете. Тем не менее, движок brython.js, который вам нужно включить в ваши страницы, составляет около 500 КБ. Кроме того, есть вопрос об импорте стандартных библиотек, которые Brython обрабатывает, выбирая отдельные .js-файлы с запросами XHR. Некоторые библиотеки уже скомпилированы в brython.js, поэтому не каждый импорт будет загружать новые файлы, но если вы используете много импорта, все может замедляться. Однако есть способы обойти это. Что я сделал, это проверить вкладку сети в инструментах браузера dev, чтобы посмотреть, какие файлы были вытащены при загрузке страницы, а затем удалить все файлы, которые мой проект не использовал в копии папки Brython src, и запустить скрипт, включенный в Brython (я думаю, что это на Brython / www / scripts / make_VFS.py), который компилирует все доступные библиотеки в один файл с именем py_VFS.js, который вам также нужно связать с вашим html. Обычно он создает один огромный файл размером 2 МБ +, но если вы удаляете то, что не используете, оно может быть довольно маленьким. Выполнение этого способа означает, что вам нужно всего лишь вытащить brython.js, py_VFS.js и ваш код на Python, и никаких дополнительных запросов XHR не потребуется.

Transcrypt ( Github ), с другой стороны, распространяется как пакет python 3, который вы можете использовать вручную или зацепить в свою инструментальную цепочку, чтобы заранее скомпилировать python для javascript. Итак, с Transcrypt вы пишите в python, запускаете транскрипцию с питоном, и он выплевывает javascript, с которым вы можете ссылаться в своем проекте. Это больше похоже на традиционный компилятор и на то, что он предлагает некоторый контроль над выходом. Например, вы можете выбрать компиляцию на ES6 или ES5 или попросить его вывести исходные файлы (что во время отладки позволит браузеру перейти непосредственно к соответствующему коду питона, вложенному в сгенерированный код javascript). Вывод javascript Transcrypt довольно краткий ( или по-другому, это довольно и красно). В моем случае 150kB python преобразуется в 165kB unminified ES5 javascript. Для сравнения, версия моего проекта Brython использовала около 800 КБ после преобразования.

Однако, получая преимущества транскрипции, нужно немного читать документы (на самом деле немного). Например, при использовании Transcrypt, «правдивость» Python для структур данных, таких как dict, set и list, не включена по умолчанию и глобально разрешает ее обескураживать из-за потенциальных проблем с производительностью, связанных с проверкой typechecking. Для ясности: в CPython пустой dict, set или list имеет значение правды False, тогда как в Javascript оно считается «истинным». Пример:

myList = [] if myList: # False in CPython bcs it's empty, true in javascript bcs it exists # do some things.

Существует по крайней мере три способа решения этой проблемы:

  • Используйте флаг -t при преобразовании python в javascript, например: $ transcrypt -t python.py (не рекомендуется, но, вероятно, это не проблема, если вы не проверяете правдивость много раз во внутренних циклах кода, чувствительного к производительности).
  • Используйте __pragma__(tconv) или __pragma__(notconv) в вашем коде, чтобы сообщить компилятору транскрипта включить автоматическое преобразование в значения правды, подобные питону, локально.
  • Вместо того, чтобы проверять значение истины, вообще избегайте проблемы, просто проверяя len (myList)> 0 … Может быть, это будет хорошо для большинства ситуаций, делает работу для моего использования света.

Правильно, поэтому мой проект становился все больше, и я хотел предварительно скомпилировать его для увеличения производительности, но с Brython было сложно это сделать (хотя это технически возможно, простой способ использовать онлайн-редактор и нажать кнопку javascript, чтобы увидеть выход). Я сделал это и связался с сгенерированным javascript из project.html, но по какой-то причине он не работал. Кроме того, мне трудно понять сообщения об ошибках от Brython, поэтому я не знал, с чего начать после этого шага. Кроме того, большой размер выведенного кода и размер движка brython начинаются с меня. Поэтому я решил поближе познакомиться с Transcrypt, который сначала казался более высоким, потому что я предпочитаю инструкции, которые подсказывают мне, как начать работу сразу (с тех пор они были добавлены).

Главное, что он установил после установки Python3.5, было 1) использовать venv (это похоже на новую встроенную версию virtualenv, которая использует меньше места для каждого проекта) для настройки папки проекта python3.5 (просто введите: python3 .5 -m venv foldername – обход для ubuntu с проблемами пакета для 3.5 ). Это делает «имя папки» с подпапкой bin среди прочего. 2) установите пакет Transcrypt python с pip ('foldername / bin / pip install transcrypt'), который устанавливает его в папку имя / lib / python3.5 / site-packages / transcrypt. 3) «активировать» текущий терминал, если вы не хотите вводить полный путь к имени папки / bin / python3.5 каждый раз. Активировать, набрав: 'source foldername / bin / activate' 4) начать писать код и скомпилировать его в javascript для тестирования. Компиляция из папки, в которую вы вписываете свой код. Например, я использовал имя папки / www / project. Итак, CD в эту папку и запустите: 'transcrypt -b your_python_script.py'. Это помещает вывод в подпапку под __javascript__ . Затем вы можете ссылаться на выведенный javascript из вашего html.

Основные проблемы

У меня довольно простые потребности, поэтому ваш пробег может отличаться.

  • Вам нужно заменить стандартные библиотеки brython или python на javascript libs. Так, например, «import json» предоставляется Brython, но в Transcrypt вы можете использовать javascript lib или просто использовать JSON.parse / JSON.stringify непосредственно в вашем коде Python. Чтобы включить мини-версию javascript-библиотеки непосредственно в ваш код python, используйте этот формат (обратите внимание на тройные кавычки):

    __pragma__ ('js', '{}', ''' // javascript code ''')

  • Специфические функции Brython html не работают с Transcrypt. Просто используйте обычные способы javascript. Примеры: 1) под Brython вы могли ссылаться на определенный тег HTML, используя 'document [' id ']', но с Transcrypt вы бы использовали 'document.getElementById (' id ') (что так же, как вы это делаете это из javascript). 2) Вы не можете удалить узел с именем «del nodeName» (bcs – это функция brython). Используйте что-то вроде «node.parentNode.removeChild (node)». 3) замените все функции DOM brython на альтернативы javascript. например class_name = className; text = textContent; html = innerHTML; parent = parentNode; children = childNodes и т. д. Я думаю, если вам нужно что-то, что содержит альтернативы, требуемые некоторыми более старыми браузерами, тогда для этого есть библиотеки javascript. 4) set_timeout Brython заменяется на javascripts setTimeout 5) HTML-теги Brython, такие как BR (), нужно заменить обычными способами javascript, а также переделать все используемые вами места в синтаксисе <= dom манипуляции. Либо введите текстовую разметку как innerHTML, либо создайте элементы с использованием синтаксиса javascript, а затем присоедините их, используя обычный синтаксис DOM javascript. Я также заметил, что для флажков brython использует «if checkbox = 'checked»: «но Transcrypt доволен», если флажок: «..

  • Я закончил продвигать проект на 2700 строк на прошлой неделе, когда Transcrypt не поддерживал несколько незначительных вещей (хотя их было достаточно легко заменить наполнителями), это были 1) str.lower, str.split (str. split присутствует, но, похоже, является разделом javascript, который работает по-разному с версией python, на поведение которой я полагался), 2) round (похоже, теперь это поддерживается в dev-версии) и 3) isnstance didn 't работать с str, int и float, только по dict, list и set. 4) Еще одно отличие от Brython, которое я заметил, заключается в том, что если я вытащил JSON-представление dict, мне нужно сделать это, используя myDict = dict (data) ', тогда как brython был доволен' myDict = data '. Но это может быть связано с чем-то в json.loads Brython, который я заменил непосредственно на JSON.parse. 5) Также без специально включенной перегрузки оператора Transcrypts (с использованием -o-переключателя для global или __pragma__('opov') для локального) вы не можете делать такие вещи, как задание операций с использованием перегруженного формата, но должны использовать соответствующие функции. Например

    a = set([1, 2, 3]) b = set([3, 4, 5]) a.difference(b) # is used instead of a - b a.union(b) # used instead of a | b a.intersection(b) # used instead of a & b a.symmetric_difference(b) # used instead of a ^ b

6) Кроме того, вы не можете итерировать dicts по умолчанию, используя 'for i in dict:', без включения этого (cmd-line -i или __pragma__('iconv') , но вы можете избежать необходимости включать его, просто используя клавиши (), например:

for key, value in dict.items(): # do things for each key and value..

Обобщить

  • Мне нравится Brython, потому что с ним легко справиться и проверить свой код (просто F5). Это ближе к истинному python, потому что большая часть стандартной библиотеки есть. Мне не нравится включать механизм транспиляции (Edit: Или можно просмотреть его как виртуальную машину python) в браузере и большой размер выведенного javascript. Если бы я должен был что-то делать (но все-таки использовал Brython), я бы использовал javascript-методы для управления DOM из brython (что вы можете сделать ..), вместо того, чтобы так много наклоняться на методы brython, потому что это потраченное время переместилось через к другому транспилеру, когда мои потребности изменились.

  • Мне нравится Transcrypt, потому что выведенный javascript действительно «скудный и средний», и поскольку единственная вещь, которую вы загружаете на сторону браузера, – это ваш сгенерированный код javascript, который похож по размеру на ваш код на Python. Также потому, что он поддерживает sourcemaps и потому что он дает мне контроль над выведенным javascript. И использование его немного меня научило об оптимизации.

Надежда, которая помогает кому-то понять, какая из них может быть полезной для их конкретного проекта.

www.rupython.com


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..