我已经在Windows Vista 64位平台上成功地将Scrapy及其所有依赖项安装到Python.org 64 shell中。这是作为Site Package安装的。我已经通过输入以下内容测试了Scrapy在基本级别上正常工作:
Import Scrapy
进入Python Shell并且没有错误。我刚开始学习如何使用Scrapy的教程。其中大多数建议使用以下命令提示符行设置新项目:
C:\Python27>scrapy startproject myproject
然而,这会抛出标题中关于Scrapy是无效命令的错误消息。我已经尝试修改我的环境变量,以允许我从命令提示符中的任何文件位置使用此命令。我在环境变量的末尾添加了以下内容:
C:\Python27;C:\Python27\Scripts;C:\Python27\Lib\site-packages\scrapy;C:\Python27\Scrapy
这似乎没有解决问题,因为我仍然得到相同的错误消息。我还尝试使用命令提示符从以下位置运行'scrapy startproject myproject'命令:
C:\Python27
C:\Python27\Scripts
C:\Python27\Scrapy
这仍然会抛出相同的错误消息。我觉得我非常接近解决方案,但我似乎无法使其成功。
有人能找到我错的地方吗?
由于
修改
为了回应MattDMo上面的最后一条评论,该命令现在可以正常工作,但它现在会抛出以下错误消息,我甚至不知道从哪里开始:
C:\Python27\Scripts>scrapy startprogram mrscript
Traceback (most recent call last):
File "c:\Python27\Scripts\scrapy", line 3, in <module>
from scrapy.cmdline import execute
File "c:\Python27\lib\site-packages\scrapy\cmdline.py", line 9, in <module>
from scrapy.crawler import CrawlerProcess
File "c:\Python27\lib\site-packages\scrapy\crawler.py", line 3, in <module>
from twisted.internet import reactor, defer
File "c:\Python27\lib\site-packages\twisted\internet\reactor.py", line 38, in
<module>
from twisted.internet import default
File "c:\Python27\lib\site-packages\twisted\internet\default.py", line 56, in
<module>
install = _getInstallFunction(platform)
File "c:\Python27\lib\site-packages\twisted\internet\default.py", line 50, in
_getInstallFunction
from twisted.internet.selectreactor import install
File "c:\Python27\lib\site-packages\twisted\internet\selectreactor.py", line 1
8, in <module>
from twisted.internet import posixbase
File "c:\Python27\lib\site-packages\twisted\internet\posixbase.py", line 24, i
n <module>
from twisted.internet import error, udp, tcp
File "c:\Python27\lib\site-packages\twisted\internet\tcp.py", line 29, in <mod
ule>
from twisted.internet._newtls import (
File "c:\Python27\lib\site-packages\twisted\internet\_newtls.py", line 21, in
<module>
from twisted.protocols.tls import TLSMemoryBIOFactory, TLSMemoryBIOProtocol
File "c:\Python27\lib\site-packages\twisted\protocols\tls.py", line 41, in <mo
dule>
from OpenSSL.SSL import Error, ZeroReturnError, WantReadError
File "c:\Python27\lib\site-packages\OpenSSL\__init__.py", line 8, in <module>
from OpenSSL import rand, crypto, SSL
File "c:\Python27\lib\site-packages\OpenSSL\rand.py", line 11, in <module>
from OpenSSL._util import (
File "c:\Python27\lib\site-packages\OpenSSL\_util.py", line 4, in <module>
binding = Binding()
File "c:\Python27\lib\site-packages\cryptography\hazmat\bindings\openssl\bindi
ng.py", line 87, in __init__
self._ensure_ffi_initialized()
File "c:\Python27\lib\site-packages\cryptography\hazmat\bindings\openssl\bindi
ng.py", line 106, in _ensure_ffi_initialized
libraries=libraries,
File "c:\Python27\lib\site-packages\cryptography\hazmat\bindings\utils.py", li
ne 80, in build_ffi
extra_link_args=extra_link_args,
File "c:\Python27\lib\site-packages\cffi\api.py", line 341, in verify
lib = self.verifier.load_library()
File "c:\Python27\lib\site-packages\cffi\verifier.py", line 75, in load_librar
y
return self._load_library()
File "c:\Python27\lib\site-packages\cffi\verifier.py", line 151, in _load_libr
ary
return self._vengine.load_library()
File "c:\Python27\lib\site-packages\cffi\vengine_cpy.py", line 138, in load_li
brary
raise ffiplatform.VerificationError(error)
cffi.ffiplatform.VerificationError: importing 'c:\\Python27\\lib\\site-packages\
\cryptography\\_Cryptography_cffi_444d7397xa22f8491.pyd': DLL load failed: The s
pecified module could not be found.
这实际上是错误日志还是标准打印输出?另外,有人可以解释为什么在我的Python脚本中添加.bat文件会导致这个工作吗?
由于
答案 0 :(得分:1)
pip install scrapy
在Windows的Python scrapy
目录中安装名为 Scripts
的文件,默认位置为C:\Python27\Scripts
。但是,C:\Python27\Scripts\scrapy
是一个Python文件,即使它没有.py
后缀。有两种运行方式。我首选的方法是使用Git Shell,因为 scrapy
设置了可执行位,并且可以毫不费力地运行。
如果您想继续使用cmd.exe
,另一种方法是制作包含以下内容的批处理文件:
@echo off
c:\Python27\python c:\Python27\Scripts\scrapy %*
将其保存在Scripts
目录中scrapy.bat
(假设您的PATH
现在包含C:\Python27;C:\Python27\Scripts
),重启cmd.exe
,您现在应该可以从命令行运行它。
答案 1 :(得分:0)
我遇到了类似的问题(我在Windows 7中使用虚拟环境)。
我注意到对于旧版本的scrapy,例如pip install scrapy==0.18.4
,它会在我的虚拟环境中自动创建scrapy.bat
:{VENV_ROOT_FOLDER}\Scripts\scrapy.bat
但如果我使用最新的scrapy(目前版本为0.24.2),则scrapy.bat
缺失。
我想使用最新的scrapy版本,所以我做的是将scrapy.bat
的副本放到其Scripts文件夹中,它解决了问题。