导入错误:没有名为 attr 的模块

Rem*_*i.b 12 python installation python-import

我只有非常基本的 Python 经验。我正在尝试安装该软件包pyslim(请参阅pypi 网站上的此处)。我做了

$ pip install pyslim

Requirement already satisfied: pyslim in ./Library/Python/2.7/lib/python/site-packages/pyslim-0.1-py2.7.egg (0.1)
Requirement already satisfied: msprime in /usr/local/lib/python2.7/site-packages (from pyslim) (0.6.1)
Requirement already satisfied: attrs in /usr/local/lib/python2.7/site-packages (from pyslim) (16.3.0)
Requirement already satisfied: svgwrite in /usr/local/lib/python2.7/site-packages (from msprime->pyslim) (1.1.12)
Requirement already satisfied: jsonschema in /usr/local/lib/python2.7/site-packages (from msprime->pyslim) (2.6.0)
Requirement already satisfied: six in /usr/local/lib/python2.7/site-packages (from msprime->pyslim) (1.10.0)
Requirement already satisfied: numpy>=1.7.0 in /usr/local/lib/python2.7/site-packages/numpy-1.10.4-py2.7-macosx-10.11-x86_64.egg (from msprime->pyslim) (1.10.4)
Requirement already satisfied: h5py in /usr/local/lib/python2.7/site-packages (from msprime->pyslim) (2.8.0)
Requirement already satisfied: pyparsing>=2.0.1 in /usr/local/lib/python2.7/site-packages (from svgwrite->msprime->pyslim) (2.2.0)
Requirement already satisfied: functools32; python_version == "2.7" in /usr/local/lib/python2.7/site-packages (from jsonschema->msprime->pyslim) (3.2.3.post2)
Run Code Online (Sandbox Code Playgroud)

但是当我打开 python 并尝试导入时pyslim,它失败了

> import pyslim

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/remi/Library/Python/2.7/lib/python/site-packages/pyslim-0.1-py2.7.egg/pyslim/__init__.py", line 4, in <module>
    from pyslim.slim_metadata import *       # NOQA
  File "/Users/remi/Library/Python/2.7/lib/python/site-packages/pyslim-0.1-py2.7.egg/pyslim/slim_metadata.py", line 1, in <module>
    import attr
ImportError: No module named attr
Run Code Online (Sandbox Code Playgroud)

所以我做了

$ pip install attr
Requirement already satisfied: attr in /usr/local/lib/python2.7/site-packages (0.3.1)
Run Code Online (Sandbox Code Playgroud)

$ pip install attrs
Requirement already satisfied: attrs in /usr/local/lib/python2.7/site-packages (16.3.0)
Run Code Online (Sandbox Code Playgroud)

我重新启动了 python 并尝试pyslim再次导入,但我一直收到相同的错误消息。我还尝试通过执行以下操作从 github 下载并安装文件

$ git clone https://github.com/tskit-dev/pyslim.git
$ cd pyslim
$ python setup.py install --user
Run Code Online (Sandbox Code Playgroud)

pypi 网站上所示。在最后一行代码中,我得到一个长输出

Download error on https://pypi.python.org/simple/: [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) -- Some packages may not be found!
No local packages or download links found for attrs
error: Could not find suitable distribution for Requirement.parse('attrs')
Run Code Online (Sandbox Code Playgroud)

Python 2.7.10在一个MAC OSX 10.11.6. 不确定是否重要,但我通常使用自制软件安装东西。我正在使用pip 18.1 from /usr/local/lib/python2.7/site-packages/pip (python 2.7).

编辑

$ which python
   /usr/bin/python
$ which pip
   /usr/local/bin/pip
Run Code Online (Sandbox Code Playgroud)

小智 19

不确定 OP 是否能够解决这个问题,但我最近在启动 scrapy shell 时遇到了这个错误,我通过升级 attrs 解决了它。

pip install --upgrade attrs
Run Code Online (Sandbox Code Playgroud)

一些窥探让我明白这是因为有时 python 库对它们要求的 attrs 版本过于宽松。


小智 7

查看与该包相关的另一个问题attrs

在您的情况下,您同时安装了attrattrs,并且它们之间不兼容,因此 python 无法正确解析导入时的包名称。

您应该仅使用attrs,因此尝试卸载attr并重试:

python -m pip uninstall attr
Run Code Online (Sandbox Code Playgroud)

如果将来您需要一些包之间不兼容,请看一下在 Python 中使用虚拟环境,它非常易于使用,并且对于在不破坏任何内容的情况下处理包和包版本非常有用。


小智 -1

首先卸载pyslim。使用“pip uninstall pyslim”。然后尝试使用“conda install -c conda-forge pyslim”再次安装

请参阅https://anaconda.org/conda-forge/pyslim

  • 他们没有使用 conda (3认同)