CLIPSpy:导入剪辑后获得 "No module name 'clips._clips'"

CLIPSpy: Getting "No module name 'clips._clips'" upon importing 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.

的原因

OS: 拱门 Linux

git-repo: https://github.com/noxdafox/clipspy

我按照指定剪辑目录的建议using pyclips and import clips as a python module来指定剪辑的位置,但它仍然给我同样的错误。

通过 pip 安装 CLIPSpy 得到 'satisfactory' 结果: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 版本,但是没有任何改变。

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

我已经克隆了包含标签 3.2

的 git 存储库

编辑 2: 通过将位于 /usr/lib/ 文件夹中的 libclips.so.6 文件重命名为 libclips.so 现在可以了。

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

一般而言,您遇到的问题表明您正试图在肮脏的环境中安装 Python 模块。例如,通过 pip 安装会在 noop 中解决,因为您事先 运行 make install 并且 pip 看到包已经安装。

要从 git 安装,您可以 git 克隆一个 specific tag or download the code from a specific releaseclipspy 使用标签推断版本号因此您会看到警告:

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.

安装 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'