问题 使用pip安装Python模块


我正在尝试安装一个名为Scrapy的模块。我用它安装了它

pip install Scrapy

我在/usr/local/lib/python2.7/site-packages中看到了'scrapy'文件夹,但是当我尝试在Python程序中导入它时,表示没有该名称的模块。关于为什么会发生这种情况的任何想法?

编辑:这是pip命令的输出:

    Downloading/unpacking Scrapy
  Downloading Scrapy-0.20.0.tar.gz (745kB): 745kB downloaded
  Running setup.py egg_info for package Scrapy

    no previously-included directories found matching 'docs/build'
Requirement already satisfied (use --upgrade to upgrade): Twisted>=10.0.0 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): w3lib>=1.2 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): queuelib in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): lxml in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): pyOpenSSL in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): cssselect>=0.9 in /usr/local/lib/python2.7/site-packages (from Scrapy)
Requirement already satisfied (use --upgrade to upgrade): zope.interface>=3.6.0 in /usr/local/lib/python2.7/site-packages (from Twisted>=10.0.0->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): six>=1.4.1 in /usr/local/lib/python2.7/site-packages (from w3lib>=1.2->Scrapy)
Requirement already satisfied (use --upgrade to upgrade): setuptools in /usr/local/lib/python2.7/site-packages/setuptools-1.1.6-py2.7.egg (from zope.interface>=3.6.0->Twisted>=10.0.0->Scrapy)
Installing collected packages: Scrapy
  Running setup.py install for Scrapy
    changing mode of build/scripts-2.7/scrapy from 644 to 755

    no previously-included directories found matching 'docs/build'
    changing mode of /usr/local/bin/scrapy to 755
Successfully installed Scrapy
Cleaning up...

当我运行/ usr / local / bin / scrapy时,我得到了命令和可用命令的用法。我注意到我的/ usr / local / bin中有一个python2.7和python2.7-32,我记得因为Mavericks的问题而安装32位版本。

这是输出 python /usr/local/bin/scrapy

Traceback (most recent call last): File "/usr/local/bin/scrapy", line 3, in <module> from scrapy.cmdline import execute ImportError: No module named scrapy.cmdline 

head /usr/local/bin/scrapy

#!/usr/local/opt/python/bin/python2.7 from scrapy.cmdline import execute execute()

1609
2017-11-12 20:36


起源

你做了吗 import Scrapy 要么 import scrapy? - BrenBarn
实际上我得到了两个导入错误。 - Miles
在那儿 /usr/local 路径 sys.path? - jfs
@Miles:如果 /path/to/scrapy 显示使用信息但是 python /path/to/scrapy 加薪 ImportError 然后至少有两个 python 你机器上的可执行文件 pip 不会安装到可用的默认值 python。什么 head /usr/local/bin/scrapy 节目吗? - jfs
@Jud:“即使包装本身没有安装在那里”也是不正确的。 scrapy  是 安装到 /usr/local/opt/... 除此以外 scrapy 命令会产生 ImportError 而不是使用信息。 @ cm2的回答 建议一种访问特定python可执行文件的简单方法。如果 python2.7 别名被定义为指向 #!/usr/local/opt/python/bin/python2.7 那就足够了 #!/usr/bin/env python2.7 shebang到任何Python脚本 import scrapy 在它或只是开始 python2.7 从命令行。 - jfs


答案:


您使用的是Homebrew或MacPorts吗?正如@ J.F.Sebastian所说,听起来你在混合OS X附带的默认python和通过包管理器安装的问题时会出现问题...尝试 /usr/local/opt/python/bin/python2.7 -m scrapy 看看是否抛出了 ImportError

如果可行,那么您可能需要考虑制作  python执行你的默认值。就像是 alias python2.7=/usr/local/opt/python/bin/python2.7 然后总是使用 python2.7 而不是默认值 python。你也可以指出 python 到了 /urs/local... 但是,如果您出于某种原因需要它,那么您将无法轻松访问系统(OS X提供的)python。


11
2017-11-18 05:12



事实证明,我通过自制软件安装的Python版本与我手动安装的Python相冲突。 - Miles
很高兴你明白了。我想我们所有人都在说非常相似的事情,RE确保scrapy正在使用 对 蟒蛇。 - cm2


编辑:您可以强制pip安装到备用位置。详情如下: 使用pip将Python包安装到不同的目录中?。如果你确实在你的系统上有额外的Python文件夹,也许你可以尝试将scrapy引导到那些,即使只是为了临时解决方案。

你能发布pip命令的输出吗?也许它在某个地方失败了?

另外,你的机器上有两个版本的Python吗? Pip只安装到一个位置,但路径上的Python版本可能不同。

最后,有时给pip的包名称与用于导入的名称不完全相同。检查包的文档。我快速浏览一下,导入应该是小写的:

import scrapy

2
2017-11-12 20:40



我将pip命令的输出添加到我的帖子中。据我所知,我只有python 2.7.5。我也试过导入scrapy无济于事。 - Miles


当所有其他方法都失败时,您始终可以设置环境变量PYTHONPATH(请参阅 永久添加目录到PYTHONPATH 寻求帮助)到你安装Scrapy的路径。 (等待你不使用virtualenv - 如果你是请指定我们可以提供帮助,通常也提供操作系统也是一个好主意)


1
2017-11-20 18:48





如果你在Ubuntu上运行:

使用官方 Ubuntu包,已经为您解决了所有依赖项,并不断更新最新的错误修复程序。

或者,即使它解决了您的问题,最好还是在虚拟环境中使用安装python库 virtualenvwrapper 为了保持库分离,尝试检查apt-get安装日志以找出添加的工具,然后删除scrapy python库并在虚拟环境中重新安装。用pip


0
2017-11-18 05:59





似乎安装在Python路径上的scrapy模块是一个可执行文件,它将为您引导Scrapy项目目录。

中的Python代码 scrapy可执行文件 看起来像这样:

   #!/usr/bin/env python

   from scrapy.cmdline import execute
   execute()

这是打算从命令行运行而不是导入到您自己的Python项目模块中。

根据 该项目的文件,使用以下语法运行scrapy可执行文件:

scrapy startproject <your-project-name>

将引导具有以下目录结构的Scrapy项目:

your-project-name/
scrapy.cfg
tutorial/
    __init__.py
    items.py
    pipelines.py
    settings.py
    spiders/
        __init__.py
        ...

文档中有许多示例演示了如何创建和运行自己的蜘蛛,链接提取器等,以及如何操作使用应用程序检索的数据。它们每个都展示了scrapy包中子目录的相应Python导入,以帮助您启动和运行。

希望这会有所帮助。


0
2017-11-21 02:45