Я знаю, что могу использовать это для отслеживания выполнения команды:
python -m trace -t script.py
Но я хочу уменьшить вывод: должны отображаться только файлы, которые находятся в моем src/(pip install -e...).
Как я могу это сделать?
Я знаю, что могу использовать это для отслеживания выполнения команды:
python -m trace -t script.py
Но я хочу уменьшить вывод: должны отображаться только файлы, которые находятся в моем src/(pip install -e...).
Как я могу это сделать?
Мое решение основано на ответе Брайана Каина:
export PYTHONIOENCODING=utf-8
python -m trace --ignore-dir=$HOME/lib64:$HOME/lib:/usr -t script.py
Мой virtualenv находится непосредственно в $HOME, а мой код установлен в редакторе $HOME/src.
Этот PYTHONIOENCODING=utf-8;
необходим, так как я получил UnicodeErrors, если там где не ascii-символы в коде python.
Если вы используете script из bash
, вы можете использовать что-то вроде:
python -m trace --ignore-dir=$(python -c 'import sys ; print ":".join(sys.path)[1:]') -t ./script.py
Таким образом, вы можете игнорировать, если вы находитесь или нет в виртуальной среде или более эзотерическом сценарии.
Как документация, вы можете использовать trace
программно:
import sys
import trace
# create a Trace object, telling it what to ignore, and whether to
# do tracing or line-counting or both.
tracer = trace.Trace(
ignoredirs=[sys.prefix, sys.exec_prefix],
trace=0,
count=1)
# run the new command using the given tracer
tracer.run('main()')
# make a report, placing output in the current directory
r = tracer.results()
r.write_results(show_missing=True, coverdir=".")
Обратите внимание на аргумент ignoredirs
на trace.Trace
.
Хотя, похоже, нет возможности явно включать только файлы в ваш src
, вы можете исключить все системные пакеты, которые для практических целей должны быть одинаковыми.
Я хочу уменьшить вывод
Нет белого списка, но есть черный список:
- ignore-module = Игнорировать каждый из указанных имен модулей и его подмодулей (если это пакет). Аргументом может быть список имен разделенных запятой.