在Windows Powershell中使用Scrapy

在Windows Powershell中使用Scrapy,powershell,scrapy,Powershell,Scrapy,我无法通过Windows Powershell使用scrapy命令,但是我可以通过python使用execute从scrapy.cmdline使用它 当我键入以scrapy开头的任何内容时,会弹出“打开方式”对话框,询问我要使用哪个程序打开文件“scrapy”,其中包含以下内容: #!C:\Users\User\AppData\Local\Enthought\Canopy32\User\Scripts\python.exe from scrapy.cmdline import execute

我无法通过Windows Powershell使用scrapy命令,但是我可以通过python使用
execute
scrapy.cmdline
使用它

当我键入以
scrapy
开头的任何内容时,会弹出“打开方式”对话框,询问我要使用哪个程序打开文件“scrapy”,其中包含以下内容:

#!C:\Users\User\AppData\Local\Enthought\Canopy32\User\Scripts\python.exe

from scrapy.cmdline import execute
execute()
我试过: 在scrapy之前添加一个
,作为 在命令之前添加
python
以上所有内容都在cmd中,而不是PS中

当我通过Python解释器正确使用scrapy时,是否有人对我的错误有任何建议?谢谢


我在Windows 7上使用PS 2.0版,Python2.7.6。

我猜您的
PATH
环境变量(
$env:PATH
)中有
c:\Python27\Scripts\
文件夹,这取决于您的Python版本,当然,它可能在该文件夹路径中,例如

当您键入
scrapy
时,Windows正在查找scrapy文件(您不知道该文件是否存在,这就是为什么您说“没有任何文件”)并尝试运行它,但无法运行,因为它没有扩展名

系统会提示您在程序中打开它,然后选择文本编辑器,并查看内容(因为有一个文件)。相反,您可以选择用Python打开它,例如浏览
C:\Users\User\AppData\Local\enthund\Canopy32\User\Scripts\Python.exe文件并选择该文件。或者
c:\python27\python.exe
,如果您有

要在不选择文件的情况下修复它,您需要指定Python解释器的位置和scrapy文件的位置,例如

python scrapy startproject myproject
必须变成

C:\Python27\python.exe C:\Python27\Scripts\scrapy startproject C:\Users\username\Documents\projects\myproject

(您必须找出Python.exe和
scrapy
在您的系统上的位置。我故意忽略您显示的Enthound路径,因为我不知道它是如何安装的,以及它使用的文件夹)

编辑:我建议不要更改路径,因为它可能会无意中破坏其他内容,而是为scrapy launcher创建一个包装器:

  • Scripts\scrapy
    重命名为
    Scripts\scrapy-helper
  • 创建一个名为
    Scripts\scrapy.bat
    的文件,其中包含以下内容

    C:\Python27\python.exe C:\Python27\Scripts\scrapy helper%*


  • 为您的系统提供正确的路径。在命令提示下键入
    scrapy
    时,Windows/PowerShell会找到它,将其作为批处理文件运行,调用正确的Python来运行正确的scrapy脚本,并将您使用的所有参数传递给Python。

    文件中的语法在Windows中不起任何作用;使用哪个程序打开文件只取决于文件扩展名。尝试运行没有扩展名的文件,例如,
    “scrapy”
    将始终提示使用哪个程序打开它。即使您将
    \
    放在前面,因为这只会确保您指向您想要的无扩展文件。当您说“尝试在命令之前添加python”时,您的确切意思是什么,当您这样做时发生了什么?如果您尝试将文件命名为
    scrapy.py
    scrapy.pyw
    ,会怎么样?首先,没有任何文件,因此我没有任何要重命名的文件。我想使用scrapy命令来开始一个新项目,它应该创建一系列项目文件。但这是当“打开方式”对话框出现时,当我选择一个程序时,我的问题中提到的3行代码出现。使用python execute(['scrapy'、'startproject'、'myproject'])中的等效命令,按照文档中的描述正确地创建所有6个左右的文件和一个新目录。我尝试了
    python scrapy startproject myproject
    这给了
    [Errno 2]没有这样的文件或目录
    你完全正确!问题是
    。\Scripts
    文件夹在
    路径
    环境中,还是
    碎片文件在那里?我尝试使用
    .py
    .pyw
    重命名
    scrapy
    ,删除它,并将其移动到我的桌面,但它总是产生
    术语“scrapy”无法识别为cmdlet、函数和,脚本文件或可操作程序..
    很难说是哪个问题-可能是有人创建了安装程序,将
    脚本
    放入
    路径
    ,因为他们需要它,而有人将
    scrapy
    放入
    脚本
    文件夹,因为他们需要它,谁知道为什么它不是为Windows兼容而写的。我已经用可能的解决方法更新了我的答案。该解决方案非常有效,谢谢!对于使用Canopy scrapy和python.exe遇到此问题的任何人,可以在以下位置找到:C:\Users\User\AppData\Local\enthund\Canopy32\User\Scripts