Relative imports for the billionth time

Script vs. Module Here’s an explanation. The short version is that there is a big difference between directly running a Python file, and importing that file from somewhere else. Just knowing what directory a file is in does not determine what package Python thinks it is in. That depends, additionally, on how you load the … Read more

What is setup.py?

setup.py is a python file, the presence of which is an indication that the module/package you are about to install has likely been packaged and distributed with Distutils, which is the standard for distributing Python Modules. This allows you to easily install Python packages. Often it’s enough to write: $ pip install . pip will … Read more

How do I check if directory exists in Python?

Use os.path.isdir for directories only: >>> import os >>> os.path.isdir(‘new_folder’) True Use os.path.exists for both files and directories: >>> import os >>> os.path.exists(os.path.join(os.getcwd(), ‘new_folder’, ‘file.txt’)) False Alternatively, you can use pathlib: >>> from pathlib import Path >>> Path(‘new_folder’).is_dir() True >>> (Path.cwd() / ‘new_folder”https://stackoverflow.com/”file.txt’).exists() False

UnicodeEncodeError: ‘ascii’ codec can’t encode character u’\xa0′ in position 20: ordinal not in range(128)

You need to read the Python Unicode HOWTO. This error is the very first example. Basically, stop using str to convert from unicode to encoded text / bytes. Instead, properly use .encode() to encode the string: p.agent_info = u’ ‘.join((agent_contact, agent_telno)).encode(‘utf-8’).strip() or work entirely in unicode.

Creating a singleton in Python

Use a Metaclass I would recommend Method #2, but you’re better off using a metaclass than a base class. Here is a sample implementation: class Singleton(type): _instances = {} def __call__(cls, *args, **kwargs): if cls not in cls._instances: cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs) return cls._instances[cls] class Logger(object): __metaclass__ = Singleton Or in Python3 class Logger(metaclass=Singleton): … Read more