Skip to main content

Posts

Showing posts with the label debug

Run Flask with Debug in PyCharm

I have gotten to setting UP a Flask environment for a project recently. Was completely puzzled by how to run this. I have used to running Django project with python manage.py script. This means pointing out a PyCharm interpreter into a certain point of entry, that is also a .py file also. In flask way of starting things there is another approach however. Here it is in Flask Docs. It states to set a variable FLASK_APP and then run a flask run command. This will confuse running a python script way of a project being run. Thus to fix this one needs to set a path to flask binary file. It usually is within a virtual environment binary directory, place where your python interpreter resides. So to set debugging one needs to set path to script binary one needs: Script: /path/to/env/bin/flask Script parameters: run   Environment variable  FLASK_APP=app.py Environment variable FLASK_DEBUG=True Set working directory back to your app path (It changes automatically according t...

POP3 Mock (Fake) server using python script

Having a need in POP3 server for my debugging purposes I have used this script. Letting it to be here in case of anyone would need to do something similar. Usage is: $ python pypopper.py 110 email_file.eml " " " pypopper: a file-based pop3 serve r Useage :     python pypopper.py <port> <path_to_message_file > " " " import logging import os import socket import sys import traceback logging . basicConfig ( format = " %(name)s %(levelname)s - %(message)s " ) log = logging . getLogger ( " pypopper " ) log . setLevel ( logging . INFO ) class ChatterboxConnection ( object ) : END = " \r \n " def __init__ ( self , conn ) : self . conn = conn def __getattr__ ( self , name ) : return getattr ( self . conn , name ) def sendall ( self , data , END = END ) : if len ( data ) < 50 : log . debug ( " send: %r " , data )    ...

Django: How to debug Django

There are several ways of debugging Django. I'll try to cover most common and tell what I know/use time to time. This article may become useful to Django newbies and is not intended to be "the only truth". It may help you know in general about debugging techniques commonly used in Python/Django projects that author is aware of. Let's get started. There are several methods to discuss here. 1. Print out into console. It may become handy while working with critical bugs that only appear in production for e.g. and are not traceable at development environment... The only way here to run your project manually and do debug in production. Those requirements are so rare that I only use standart (builtin) tools. There is a thing called PDB (Python Debugger). That comes in a standart set of usual python distribution. So it will be available to you at almost any environment where you have console access to your project. Here is an official documentation for pdb module ....

Django: 'ManyRelatedManager' object is not iterable

Upon development proces you often meet ManyToMany relations that throw errors in templates. I prefer to feed everything to context and play with it there. This kind of error appears when you iterate through a model's ManyToMany field. To fix it just add a related 'all' manager through dot syntax. Like so: Model: class BannerImage ( models . Model ) : image = models . ImageField ( upload_to = "somedir" ) def get_image_url ( self ) : return 'Image url here' class Banner ( models . Model ) : name = models . CharField ( max_length = 250 , null = True ) images = models . ManyToManyField ( BannerImage ) View/Tag or else, that creates context: banner = get_object_or_404 ( Banner , pk = 1 ) return { 'banner' : banner , } Template causing the error: {% for image in banner . images %} < img src = "{{ image.get_image_url }}" /> {% endfor %} Template without the error: {% ...

Django: Virtualenv with Eclipse befrending

Hi! Many people use Virtualenv. It has become common pattern now days. I like Virtualenv but it has no debugger. You can run ' python manage.py runserver ' but it will newer help you see somthing like runtime variables and code flow. I like PyDev  debugger. It helps me a lot. Anyway I faced a problem recently. My employer wants me to run code at virtualenv. I needed to download and run project. I made it creating New virtualenv called 'venv' inside a project folder. Command is: virtualenv - - no - site - packages venv It will create dir 'venv' inside current directory. So you should be at where you need to store your virtualenv (your project directory for e.g.). --no-site-packeges  parameter says that your new virtual environment will not have packages installed in system. It's a must if you want to avoid collisions with newer versions of code. Now we have a dir inside your project called venv  containing our separated python environment. Lets activ...