Python爬虫IDE能正常运行但终端无法执行,求指点原因与解决方案
我用 pycharm 写好了一个爬虫后,直接在 spider_main.py 上右击可以运行, 但是终端运行出错。

上传项目到 github 上后在 clone 下来, 直接在 pycharm 里右击运行 spider_main.py,也提示错误了

文件目录结构如下:

GitHub 地址: https://github.com/magic3584/crawl_demo
Python爬虫IDE能正常运行但终端无法执行,求指点原因与解决方案
IDE 有自动环境选择,命令行你可能没有配好。
我无法理解你的问题
环境不就是用的 venv 就行了吗?
你在 crawl_demo 这一层目录,运行 python3 douban_spider/spider_main.py 试试
右上角点击右键那个运行是独立于命令行的
先打开配置 > Project > Project Interpreter 看看你用的哪个 python
再去命令行看 which python3 确保都是一致的
然后回到 Project Interpreter 那里换不同 python 版本,用 绿箭头( Run )跑
直接运行 spider_main.py 他就是最顶层的包 /模块 /文件,也就是 if name == “main” 的原理,故不会再往上找。要改只需要在 douban_spider 同级目录下添加入口文件,把 douban_spider 作为包,导入你要运行的模块即可。
不行。。。
项目里 python interpreter 显示
name:Python 3.6.0 virtualenv at ~/Desktop/practice/crawl_demo/venv
Interpreter Path:/Users/wang/Desktop/practice/crawl_demo/venv/bin/python
终端里 which python3
/Users/wang/Desktop/practice/crawl_demo/venv/bin/python3
if __name == ‘main’ 我现在是写在 spider_main.py 里。能否详细说下你说的入口文件怎么弄吗?
看上去一个是 v2 一个是 v3 啊,你用 v2 的那个跑一下看看
我把两个改成一样了。直接在 spider_mian.py 上右击运行也跑不了。还是 module 的问题
最简单的办法: shell<br>$ cd crawl_demo<br>$ mv douban_spider/<a target="_blank" href="http://spider_main.py" rel="nofollow noopener">spider_main.py</a> .<br>$ python3 <a target="_blank" href="http://spider_main.py" rel="nofollow noopener">spider_main.py</a><br>
建议去看看 Python 模块导入机制。
要不你去 https://github.com/magic3584/crawl_demo clone 下来试试?我试了你说的方法,还是提示一样的错误。。。
我是 clone 下来后弄了个 virtualenv,然后在 venv 里执行 python 的
确定按我说的做了?报错了截图呢,目录结构呢?
上面的应该是忘了删 douban_spider/spider_main.py,更正如下
简单看了一下,我先不分析你在 IDE 里为什么能跑这个,我搞不懂你在主入口头部 import 时还要加上from douban_spider这一句?想写模块?
解决方法就是把from douban_spider去掉,毕竟你主入口在那个目录里,你要是这么写的话解释器根本找不到那个模块。如果硬要写 from 的话,把那句改成from . import html_downloader, html_parser, html_outputer,这样解释器也会从当前目录里找对应模块
建议学习一下 py 的 import 路径问题。
可以了。。。我还有一点疑问:
spider_main.py 的第一行 from douban_spider import html_downloader, html_parser, html_outputer 为什么会出现 4 个错误呢?但是不影响运行。。。而且手动输入的话也没有提示。不像导入 bs4 那样手动输入的时候会提示
出错的内容贴出来看看
我看着教程里就这样写的。教程也是用 IDE 跑的。我想在终端里试试发现怎么都搞不好。。。按照您的指点改成 from .douban_spider import xxx 可以了。结构什么的还是不太懂,还得再看看。谢谢
#16 解释清楚了,谢谢您的指点
现在可以了,谢谢
帮不了你,恕我愚钝,猜不透那 4 个错误是啥子错误,也不知道什么手动输入。北京有个龙泉寺,去看看,你先别告诉大师报的错,看大师能算出来你的代码报什么错误你给什么输入不。
我的意思是出现这个错误

注释掉的话反而运行不了,但是手动敲代码的话也没有提示,不像导入 bs4 一样打了 from b 就会提示 bs4
现在寺庙都有这业务了?!


