CLIPSpy: получение «Нет имени модуля« clips._clips »» при импорте клипов - PullRequest
0 голосов
/ 07 марта 2019

Я установил 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-РЕПО: 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 Ответ

0 голосов
/ 07 марта 2019

Я являюсь автором модуля clipspy. Я бы скорее предложил вам открыть вопрос GitHub для этих типов вопросов, а не вопрос SO.

В целом, проблемы, от которых вы страдаете, указывают на то, что вы пытаетесь установить модуль Python в грязной среде. Например, установка через pip разрешается в noop, потому что вы запустили make install заранее и pip видит, что пакет уже установлен.

Чтобы установить из git, вы должны либо git clone определенный тег , либо загрузить код из определенного выпуска . 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'
...