Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 11, 2022 08:24:25

orel_da
Зарегистрирован: 2021-08-24
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError: type object has no attribute

Привет.
Не могу понять, как правильно подключать модули.
Есть самописная библиотека на java

package com.odi.emaileport; 
public class SendEmail{
...
public static void SendHTMLEmail(...)
...
}
там есть статическая функция SendHTMLEmail. Эту библиотеку уже успешно используем в другой программе (Jython 2.5). текст подключения следующий:
 import SendEmail as email
email.SendHTMLEmail(...)
но в другой программе (Jython 2.7), если я пишу так же, то ошибка: from com.odi.emaileport.SendEmail import SendHTMLEmail ImportError: cannot import name SendHTMLEmail
я прописываю полный путь
 import com.odi.emaileport.SendEmail  as email
email.SendHTMLEmail(...)
тогда ошибка следущая: AttributeError: type object ‘com.odi.emaileport.SendEmail’ has no attribute ‘SendHTMLEmail’

Программно подключаю все требуемые библиотеки (jar файлы) с помощью sys.path.append()
Что делаю не так?

Отредактировано orel_da (Фев. 11, 2022 08:26:03)

Офлайн

#2 Фев. 11, 2022 10:39:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

AttributeError: type object has no attribute

Сделай тестовый пакет и в нём тестовый класс на Java, скомилируй его в jar-файл и подключи в Jython. Если он подключится, значит ты умеешь подключать. Если он не подключится, то надо научиться подключать сначала. Когда будешь уметь подключать, тогда и займёшься sendmail'ом этим.

orel_da
Программно подключаю все требуемые библиотеки (jar файлы) с помощью sys.path.append()
Если используешь sys.path.append(), значит что-то не то делаешь. Обычно этот список не используется никогда.



Офлайн

#3 Фев. 11, 2022 11:53:38

orel_da
Зарегистрирован: 2021-08-24
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError: type object has no attribute

py.user.next
Сделай тестовый пакет и в нём тестовый класс на Java, скомилируй его в jar-файл и подключи в Jython. Если он подключится, значит ты умеешь подключать. Если он не подключится, то надо научиться подключать сначала. Когда будешь уметь подключать, тогда и займёшься sendmail'ом этим.
Да, вы знаете, другие библиотеки пробовала подключать, тоже не видит их Jython. И еще нашла ошибку. Имя email такая библиотека есть в Python. Jython видимо путает имена. Изменила превдоним, все равно та же ошибка. Последую вашему совету.

Если используешь sys.path.append(), значит что-то не то делаешь. Обычно этот список не используется никогда

есть другой способ?

возможно, это специфика системы, в которой я пытаюсь написать скрипт. Действовала по инструкции из блога

Отредактировано orel_da (Фев. 11, 2022 13:45:15)

Офлайн

#4 Фев. 11, 2022 20:18:47

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

AttributeError: type object has no attribute

orel_da
Имя email такая библиотека есть в Python. Jython видимо путает имена.
Это тут ни при чём.
  
>>> import math as email
>>> email.pi
3.141592653589793
>>>

orel_da
есть другой способ?
Снаружи надо что-то сделать правильно, тогда не понадобится никакие пути добавлять изнутри скрипта. Если не видит путей каких-то, значит снаружи это не сделано.

orel_da
Действовала по инструкции из блога
Используй официальную документацию. Использование sys.path - это костыль. А блоги, в которых костыли предлагают, надо игнорировать по возможности.



Отредактировано py.user.next (Фев. 11, 2022 20:19:50)

Офлайн

#5 Фев. 14, 2022 09:38:39

orel_da
Зарегистрирован: 2021-08-24
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

AttributeError: type object has no attribute

py.user.next
да, нашла папку, в которую разработчик предлагает добавлять сторонние библиотеки. После перезапуска службы, библиотека подтянулась.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version