python-babel / babel

The official repository for Babel, the Python Internationalization Library
http://babel.pocoo.org/
BSD 3-Clause "New" or "Revised" License
1.29k stars 433 forks source link

AttributeError: module 'babel' has no attribute 'numbers' #995

Closed danielbellhv closed 1 year ago

danielbellhv commented 1 year ago

As per Stack Overflow post


Goal: Pass a locale code and retrieve a currency symbol.

My approach is to use babel library. However, I encounter an AttributeError in version 2.12.1.

Documentation | PDF page number: 82

Code:

import babel

def get_currency_symbol(locale_code):
    try:
        return babel.numbers.get_currency_symbol(None, locale_code)
    except babel.core.UnknownLocaleError:
        print(f"Invalid locale code: {locale_code}")
        return '$'

print(get_currency_symbol('en_US'))
print(get_currency_symbol('fr_FR'))
print(get_currency_symbol('invalid_locale'))

Traceback:

(venv) me@VKY7WPYWV1 project % pip install --upgrade babel
Requirement already satisfied: babel in /Users/me/miniconda3/envs/project/lib/python3.9/site-packages (2.12.1)

(venv) me@VKY7WPYWV1 project % pip show babel
Name: Babel
Version: 2.12.1
Summary: Internationalization utilities
Home-page: https://babel.pocoo.org/
Author: Armin Ronacher
Author-email: armin.ronacher@active-4.com
License: BSD
Location: /Users/me/miniconda3/envs/project/lib/python3.9/site-packages
Requires: 
Required-by:

(venv) me@VKY7WPYWV1 project % python tools/del.py
Traceback (most recent call last):
  File "/Users/me/GitHub/lumada-catalog/project/tools/del.py", line 7, in <module>
    print(get_currency_symbol('en_US'))
  File "/Users/me/GitHub/lumada-catalog/project/tools/del.py", line 4, in get_currency_symbol
    return babel.numbers.get_currency_symbol(None, locale_code)
AttributeError: module 'babel' has no attribute 'numbers'
akx commented 1 year ago

You will need to

import babel.numbers

instead.