Показ дописів із міткою python. Показати всі дописи
Показ дописів із міткою python. Показати всі дописи

07.12.13

Running Python code in a LaTeX document

I am currently working on a LaTeX document in which the content is still in a very fluid phase and  the figures change often. I usually have a Python script that prepares the figures and saves them as PDFs. To iterate faster, I wanted to insert Python code directly into LaTeX, executing the code when the document is compiled.

Googling around I found that I was not the first one to want this. There is this LaTeX package with this github repo. The package provides a new environment (python) within which you can write arbitrary Python code. The code is executed when the document is compiled and the output is inserted into the document.

I try it and it worked like a charm. It was even printing the traceback in red when there was an error in the script. You can do things like this:

\documentclass[a4paper]{book}

\usepackage[pdftex]{graphicx}
\usepackage{python}

\begin{document}

A simple example:

\begin{python}
print(2+3)
\end{python}

\vspace{1cm}
Generating and displaying a figure:

\begin{python}
import numpy as np
import matplotlib.pyplot as plt

# evenly sampled time at 200ms intervals
t = np.arange(0., 5., 0.2)

# red dashes, blue squares and green triangles
plt.plot(t, t, 'r--', t, t**2, 'bs', t, t**3, 'g^')
plt.savefig('fig1.pdf', format='pdf')
print(r"""
\begin{figure}[htbp]
   \centering
    \includegraphics[width=12cm]{fig1.pdf}
    \caption{Here goes the caption}
    \label{fig:comparison}
\end{figure}
""")

\end{python}

\end{document}

and the output is:



But as the document grew, the LaTeX compilation time increased dramatically. The problem: Python scripts are executed on each compilation even if they have not changed. 

I have forked the repo and hacked the code. In the new version, python scripts are only executed if needed. Using a helper python script (runpy.py) to avoid encoding differences between terminals, UTF-8 is fully supported. Additionally, you can select the python binary to use and choose to save auxiliary files in a subfolder to avoid poluting the main folder. These options are explained in the README. Check the code is in this github repo.

I am not really a LaTeX programmer and therefore I am sure that there a lot of things to be improved. Feel free to send patches, suggestions and comments.

12.10.13

Как быстро поднять простой HTTP-сервер

Иногда нужно очень быстро поднять HTTP-сервер с минимальным функционалом. Например, нужно проверить HTML+JavaScript, который работает только через веб-сервер. Я, конечно понимаю, что у меня под рукой всегда есть, как минимум nginx, и поднять на нем сайт, который будет раздавать статические фалы, делов на 5-10 минут. Но, во-первых, это долго, а во-вторых, этот самый nginx у меня находится на виртуалке, пусть и включенной в 90% времени на ноутбуке. А тут прийдется не только веб-сервер настроить, но и расшаренные папки в VirtualBox-е, и так далее...
Единственное, что у меня действительно всегда есть под рукой, это Python (уже несколько лет не пользуюсь ОС Windows, а на всех *nix он есть из коробки). Поднять простой тестовый веб-сервер на питоне можно всего одной командой:
$ python -m SimpleHTTPServer 8100
После этой команды, у вас локально запустится веб-сервер на 8100-м порту, который покажет содержимое текущей папки.
Работает это благодаря ключу -m, который указывает интерпритатору о том, что необходимо выполнить модуль как скрипт. Это идентично команде "$ python /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/SimpleHTTPServer.py", но писать значительно проще. Единственное ограничение, что этот модуль должен быть доступен в sys.path

Для python3 команда выглядит так python -m http.server 8888

20.08.13

Настраиваем Vim под Python

Сегодня я хочу рассказать вам, как я настраивал любимый всеми редактор Vim (который в одном режиме пищит, а в другом — все портит) для написания кода на Python. Статья расчитана на начинающих виммеров.
У меня получилась такая картинка:



Пітон утиліта, яка перевірить ваш код

pylint - Пітон утиліта, яка перевірить ваш код на:

* дотримання правил правильного форматування коду (згідно PEP8)
* чи імпортовані модулі і визначені змінні дійсно використовуються
* правильний синтаксис
* чи немає бракує визначених змінних і модулів
* і ще багато багато іншого

І основне, для цього не треба запускати ваше середовище розробки, все можна зробити однією командою на вашому пітон модулі.

Якщо ще не використовуєте його - рекомендую! Заощаджує купу часу, та ще й гарантує, що ваш код не лише працюючий, але й у добрій формі:

http://www.pylint.org/

В складніших проектах, де стиль коду власний від проекта, де багато імпортів, що важко відслідкувати, я користуюся простішою утиліткою pyflakes:

https://pypi.python.org/pypi/pyflakes

Він дозволяє мені дуже швидко перевірити: синтаксис мого модуля, чи бракує змінних, чи немає надлишкових імпортів.

19.08.13

Installing pythonstartup file


in your ~/.bashrc:
export PYTHONSTARTUP=$HOME/.pythonstartup
and put your python code in $HOME/.pythonstartup, like:
import rlcompleter
import readline

readline.parse_and_bind("tab: complete")
For more information about PYTHONSTARTUP variable, read the python man page:
$ man python