CLIPSpy: получение "Нет имени модуля" clips._clips "" при импорте клипов
Я установил CLIPSpy из репозитория git и следовал инструкциям по установке с исходными файлами. Тем не менее после установки и запуска оболочки Python я получаю эту ошибку:
`import clips
.../clipspy/clips/__init__.py", line 30, in <module>
from clips.error import CLIPSError
.../clipspy/clips/error.py", line 32, in <module>
from clips.router import Router
.../clipspy/clips/router.py", line 7, in <module>
from clips._clips import lib, ffi
ModuleNotFoundError: No module named 'clips._clips'`
Несмотря на эту ошибку, если я запускаю те же команды за пределами моего каталога CLIPSpy, я могу импортировать клипы, но получаю другую ошибку.
>>> import clips
>>> env = clips.Environment()
>>> env.assert_string("(test 12)")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Environment' object has no attribute 'assert_string'
Я предполагаю, что ModuleNotFoundError может быть ответственным за AttributeError.
ОС: Arch Linux
git-repo: https://github.com/noxdafox/clipspy
Я следовал совету указать каталог клипов, используя pyclips и импортировать клипы в качестве модуля python, чтобы указать местоположение клипов, но он все еще дает мне ту же ошибку.
Установка CLIPSpy через pip дала "удовлетворительные" результаты: ModuleNotFoundError: Нет модуля с именем "pygame"
Requirement already satisfied: clipspy in /usr/lib/python3.7/site-packages/clipspy-0.3.2_2_g7dd9ca2-py3.7-linux-x86_64.egg (0.3.2-2-g7dd9ca2)
Requirement already satisfied: cffi>=1.0.0 in /usr/lib/python3.7/site-packages (from clipspy) (1.12.2)
Requirement already satisfied: pycparser in /usr/lib/python3.7/site-packages (from cffi>=1.0.0->clipspy) (2.19)
Я много раз пытался переустановить clipspy через github, но та же проблема сохраняется. Интересно то, что я некоторое время использовал pyclips как альтернативу, и это выдало мне ту же ошибку. Это может быть связано с каталогом или установкой, но я не уверен, что это может быть.
Процесс установки для CLIPSpy был следующим:
делать:
python setup.py build_ext --include-dirs clips_source \
--library-dirs clips_source
/usr/lib/python3.7/site-packages/setuptools/dist.py:484: UserWarning: The version specified ('0.3.2-2-g7dd9ca2') is an invalid version, this may not work as expected with newer versions of setuptools, pip, and PyPI. Please see PEP 440 for more details.
"details." % self.metadata.version
running build_ext
generating cffi module 'build/temp.linux-x86_64-3.7/_clips.c'
already up-to-date
Я попытался переустановить setuptools, чтобы посмотреть, смогу ли я получить действительную версию dist.py, но, увы, ничего не изменилось.
sudo make install:
....
Installed /usr/lib/python3.7/site-packages/clipspy-0.3.2_2_g7dd9ca2-py3.7-linux-x86_64.egg
Processing dependencies for clipspy===0.3.2-2-g7dd9ca2
Searching for cffi==1.12.2
Best match: cffi 1.12.2
Adding cffi 1.12.2 to easy-install.pth file
Using /usr/lib/python3.7/site-packages
Searching for pycparser==2.19
Best match: pycparser 2.19
Adding pycparser 2.19 to easy-install.pth file
Using /usr/lib/python3.7/site-packages
Finished processing dependencies for clipspy===0.3.2-2-g7dd9ca2
Решение может быть чем-то простым, но я не могу понять, что это такое.
Буду очень признателен за любую помощь или совет о том, что делать или где я ошибся.
РЕДАКТИРОВАТЬ 1: После удаления файлов, связанных с клипами и новой установки, я больше не получаю ошибку атрибута. Скорее я получаю ImportError
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.7/site-packages/clipspy-0.3.1-py3.7-linux-x86_64.egg/clips/__init.py", line 30, in <module> from clips.error import CLIPSError
File "/usr/lib/python3.7/site-packages/clipspy-0.3.1-py3.7-linux-x86_64.egg/clips/error.py", line 32, in <module> from clips.router import Router
File "/usr/lib/python3.7/site-packages/clipspy-0.3.1-py3.7-linux-x86_64.egg/clips/router.py", line 7, in <module> from clips._clips import lib ffi
Import Error: libclips.so: cannot open shared object file: No such file or directory
Я клонировал git-репозиторий, содержащий тег 3.2.
РЕДАКТИРОВАТЬ 2: удалось исправить ошибку, переименовав файл libclips.so.6, расположенный в папке /usr/lib/, в libclips.so Теперь это работает.
1 ответ
Я автор clipspy
модуль. Я бы скорее предложил вам открыть проблему GitHub для этих типов вопросов, а не вопрос SO.
В целом, проблемы, от которых вы страдаете, указывают на то, что вы пытаетесь установить модуль Python в грязной среде. Например, установка через pip
решает в ноу, потому что вы бежали make install
заранее и pip
видит пакет уже установлен.
Чтобы установить из git, вы должны либо git клонировать определенный тег, либо загрузить код из определенного выпуска. clipspy
использует теги, чтобы вывести номер версии, поэтому вы видите предупреждение:
UserWarning: указанная версия ('0.3.2-2-g7dd9ca2') является недопустимой версией, она может не работать должным образом с более новыми версиями setuptools, pip и PyPI. Пожалуйста, смотрите PEP 440 для более подробной информации.
Распространенная проблема при установке clipspy
это старая версия setuptools
, Вы пытались обновить его до более поздней версии?
# pip install --upgrade setuptools
Последнее замечание: у вас также есть PyCLIPS, установленный в системе? Пространства имен будут конфликтовать, так как оба модуля называются clips
, Это объясняет ошибку трассировки:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'Environment' object has no attribute 'assert_string'