Astropy не может проанализировать дюймы

#python #units-of-measurement #astropy

#python #единицы измерения #astropy

Вопрос:

Я пытаюсь преобразовать inches в mm с помощью astropy. Во входных данных у меня есть единица измерения в виде строки («дюйм», «мм»). Я создаю для этого пример функции:

     def astro_conv(self, amount: float, fromm: str, to: str) -> float:
         u_from = u.Unit(fromm)
         u_to = u.Unit(to)
         return u_from.to(u_to, amount)
  

Я получил сообщение: {ValueError}'inch' did not parse as unit: At col 0, inch is not a valid unit. У меня есть документация для проверки, и inch она должна быть доступна: http://docs.astropy.org/en/stable/units/
Что я делаю не так?

Комментарии:

1. Из документации «»Этот пакет определяет используемые в разговорной речи имперские единицы. Они доступны в пространстве имен astropy.units.imperial, но не в пространстве имен astropy.units верхнего уровня, чтобы включить их: import astropy.units as u, u.imperial.enable()

2. Да, вы правы! Я был слеп 🙂

Ответ №1:

Согласно документам, Astropy не включает имперские единицы, определенные по умолчанию. Я думаю, что это частично для уменьшения пространства имен units по умолчанию и накладных расходов, связанных с его созданием и поиском, и в этом случае в жертву приносятся имперские единицы, поскольку они по большей части меньше используются в астрономии:

Этот пакет определяет используемые в разговорной речи имперские единицы. Они доступны в пространстве имен astropy.units.imperial, но не в пространстве имен astropy.units верхнего уровня, например:

 >>> import astropy.units as u
>>> mph = u.imperial.mile / u.hour
>>> mph
Unit("mi / h")
  

Чтобы включить их в compose и результаты find_equivalent_units , выполните:

 >>> import astropy.units as u
>>> u.imperial.enable()