pyad: Устанавливается нормально, но говорит, что не может найти adbase

Это меня очень смущает. Я установил pyad с помощью pip, и все выглядит нормально:

C:\WINDOWS\system32>pip install pyad
Collecting pyad
  Using cached pyad-0.5.16.tar.gz
Requirement already satisfied (use --upgrade to upgrade): setuptools in c:\python35\lib\site-packages (from pyad)
Requirement already satisfied (use --upgrade to upgrade): pywin32 in c:\python35\lib\site-packages (from pyad)
Installing collected packages: pyad
  Running setup.py install for pyad ... done
Successfully installed pyad-0.5.16

Но когда я пытаюсь его использовать, я получаю сообщение об ошибке, что не находит adbase:

C:\WINDOWS\system32>python
Python 3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyad import aduser
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python35\lib\site-packages\pyad\__init__.py", line 1, in <module>
    from adbase import set_defaults as pyad_setdefaults
ImportError: No module named 'adbase'
>>> import pyad
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python35\lib\site-packages\pyad\__init__.py", line 1, in <module>
    from adbase import set_defaults as pyad_setdefaults
ImportError: No module named 'adbase'

Это странно, потому что, если я пытаюсь удалить pyad или проверяю каталог site-packages, adbase определенно найдется:

C:\WINDOWS\system32>pip uninstall pyad
Uninstalling pyad-0.5.16:
  c:\python35\lib\site-packages\pyad-0.5.16-py3.5.egg-info
  c:\python35\lib\site-packages\pyad\__init__.py
  c:\python35\lib\site-packages\pyad\__pycache__\__init__.cpython-35.pyc
  c:\python35\lib\site-packages\pyad\__pycache__\adcomputer.cpython-35.pyc
  c:\python35\lib\site-packages\pyad\__pycache__\addomain.cpython-35.pyc
  c:\python35\lib\site-packages\pyad\__pycache__\adgroup.cpython-35.pyc
  c:\python35\lib\site-packages\pyad\__pycache__\adquery.cpython-35.pyc
  c:\python35\lib\site-packages\pyad\__pycache__\adsearch.cpython-35.pyc
  c:\python35\lib\site-packages\pyad\__pycache__\pyad.cpython-35.pyc
  c:\python35\lib\site-packages\pyad\adbase.py
  c:\python35\lib\site-packages\pyad\adcomputer.py
  c:\python35\lib\site-packages\pyad\adcontainer.py
  c:\python35\lib\site-packages\pyad\addomain.py
  c:\python35\lib\site-packages\pyad\adgroup.py
  c:\python35\lib\site-packages\pyad\adobject.py
  c:\python35\lib\site-packages\pyad\adquery.py
  c:\python35\lib\site-packages\pyad\adsearch.py
  c:\python35\lib\site-packages\pyad\aduser.py
  c:\python35\lib\site-packages\pyad\pyad.py
  c:\python35\lib\site-packages\pyad\pyadconstants.py
  c:\python35\lib\site-packages\pyad\pyadexceptions.py
  c:\python35\lib\site-packages\pyad\pyadutils.py
Proceed (y/n)?

содержимое каталога pyad

Я действительно не уверен, что еще попробовать. Я запустил все в командной строке с повышенными правами, поэтому это не проблема с разрешениями. Я даже пытался загрузить pyad и установить его с помощью setup.py, но у меня была та же проблема с этим. AdBase определенно есть, и я не могу понять, почему Python не находит его.

1 ответ

Решение

Это ошибка на пядьке. Они импортируют adbase, как если бы это был отдельный модуль или пакет, и поэтому он не работает. Правильный способ исправить это - изменить импорт на абсолютный. from pyad.adbase import ... или родственник from .adbase import ...,

Однако, если вы проверите master Ветка на Github, вы увидите, что они на самом деле это исправили. Но это еще не все, если вы проверите их setup.py вы увидите, что версия на Github 0.5.15 последняя версия PyPI, установленная вами, 0.5.16, Weird.

Я предлагаю вам установить пакет прямо с Github, и это должно решить проблему. Для этого сначала удалите pyad а потом беги

pip install https://github.com/zakird/pyad/archive/master.zip
Другие вопросы по тегам