首页 > 解决方案 > CLIPSpy:导入剪辑时出现“没有模块名称'clips._clips'”

问题描述

我已经从 git 存储库安装了 CLIPSpy,并按照说明安装源文件。然而,在安装并运行 python shell 之后,我得到了这个错误:

   `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 和 import clips as a python module来指定剪辑的位置,但它仍然给我同样的错误。

通过pip安装 CLIPSpy给出了“令人满意”的结果:ModuleNotFoundError: No module named '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)

我多次尝试通过 github 重新安装 clipspy,但同样的问题仍然存在。有趣的部分是我使用 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 版本,但是没有任何改变。

须藤制作安装:

....
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: 删除与剪辑相关的文件并重新安装后,我不再收到Attribute Error。相反,我得到一个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

我已经克隆了包含标签 3.2 的 git 存储库

编辑 2:通过将位于/usr/lib/文件夹中的libclips.so.6文件重命名为libclips.so 来修复错误 现在它可以工作了。

标签: pythonlinuxattributeerrorclipsclipspy

解决方案


我是clipspy模块的作者。我宁愿建议你为这些类型的问题打开一个 GitHub 问题,而不是一个 SO 问题。

一般来说,您遇到的问题表明您正试图在肮脏的环境中安装 Python 模块。例如,安装 viapip会在 noop 中解析,因为您make install事先运行并pip看到该软件包已安装。

要从 git 安装,您可以 git clone特定标签或从特定版本下载代码。clipspy使用标签来推断版本号,因此您会看到警告:

用户警告:指定的版本 ('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'

推荐阅读