Найти - Пользователи
Полная версия: AttributeError: type object has no attribute
Начало » Python для новичков » AttributeError: type object has no attribute
1
orel_da
Привет.
Не могу понять, как правильно подключать модули.
Есть самописная библиотека на 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()
Что делаю не так?
py.user.next
Сделай тестовый пакет и в нём тестовый класс на Java, скомилируй его в jar-файл и подключи в Jython. Если он подключится, значит ты умеешь подключать. Если он не подключится, то надо научиться подключать сначала. Когда будешь уметь подключать, тогда и займёшься sendmail'ом этим.

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

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

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

возможно, это специфика системы, в которой я пытаюсь написать скрипт. Действовала по инструкции из блога
py.user.next
orel_da
Имя email такая библиотека есть в Python. Jython видимо путает имена.
Это тут ни при чём.
  
>>> import math as email
>>> email.pi
3.141592653589793
>>>

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

orel_da
Действовала по инструкции из блога
Используй официальную документацию. Использование sys.path - это костыль. А блоги, в которых костыли предлагают, надо игнорировать по возможности.
orel_da
py.user.next
да, нашла папку, в которую разработчик предлагает добавлять сторонние библиотеки. После перезапуска службы, библиотека подтянулась.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB