从节点子进程运行带有scrapy导入的Python脚本
我正在尝试使用一个简单的scraper来收集数据,并希望使用Python Scrapy。应用程序的其余部分将通过Nodejs/Express完成,因此我想在需要新数据时按需调用此脚本 python代码通过piecharm在本地运行得很好,但是当它作为脚本运行时,我看到了一些问题从节点子进程运行带有scrapy导入的Python脚本,python,node.js,python-3.x,scrapy,anaconda,Python,Node.js,Python 3.x,Scrapy,Anaconda,我正在尝试使用一个简单的scraper来收集数据,并希望使用Python Scrapy。应用程序的其余部分将通过Nodejs/Express完成,因此我想在需要新数据时按需调用此脚本 python代码通过piecharm在本地运行得很好,但是当它作为脚本运行时,我看到了一些问题 通过节点,当我在本地运行服务器并点击/name时,它会失败,并显示“没有名为'scrapy'的模块” 当我通过Anaconda提示符运行服务器时,它工作正常,并且scrapy导入时没有错误 我已经通过conda在expr
app.get('/name', callName);
function callName(req, res) {
console.log("test");
var spawn = require('child_process').spawn;
const pyProg = spawn('python', ['pythonscript.py']);
pyProg.stdout.on('data', function(data) {
console.log(data.toString());
res.write(data);
res.end('end');
});
}
//Print URL for accessing server
console.log('Server running at http://127.0.0.1:8000/')
app.listen(process.env.PORT || 8000, () => console.log("Listening on " + (process.env.PORT || 8000)));
Python脚本:
try:
import sys
import scrapy
data = "python starting"
print(data)
sys.stdout.flush()
except Exception as exception:
print(exception, False)
print(exception.__class__.__name__ + ": " + exception.message)
更新:
从Anaconda解释器运行import scrapy时(注释中的另一个导致“未找到模块”)
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“\Anaconda3\lib\site packages\scrapy\uuuuu init\uuuuuuu.py”,第34行,在
从scrapy.Spider进口蜘蛛
文件“\Anaconda3\lib\site packages\scrapy\spider\uuuuu init\uuuuuuuu.py”,第10行,在
从scrapy.http导入请求
文件“\Anaconda3\lib\site packages\scrapy\http\uuuu init\uuuuuu.py”,第11行,在
从scrapy.http.request.form导入FormRequest
文件“\Anaconda3\lib\site packages\scrapy\http\request\form.py”,第11行,在
导入lxml.html
文件“\Anaconda3\lib\site packages\lxml\html\uuuu init\uuuuuu.py”,第54行,在
从..导入etree
ImportError:DLL加载失败:找不到指定的模块
因此,这看起来不仅与解释器相关,还可能与终端使用的Anacondas变量有关?这似乎只是使用哪种python环境的问题。尝试弄清楚在anaconda shell中调用哪种python解释器(例如,使用命令
which python
)你的意思是在哪里python
?我运行了它,并且两者都有相同的Local\Programs\python\Python37-32\python.exe
,但是anaconda外壳包含Anaconda3\python.exe
是。尝试使用其完整路径启动任何解释器,然后尝试导入scrapy
。如果没有错误显示,您在正确的解释器中。然后在节点中使用它。@ThiagoCurvelo查看更新的问题抱歉,我不熟悉Anaconda或Windows。但这当然是选择正确的解释器的问题。在Python世界中,我们用来解决类似的问题,但我认为这对您没有帮助,因为您必须选择正确的Python尝试找出PyCharm使用的python二进制文件。