Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从节点子进程运行带有scrapy导入的Python脚本_Python_Node.js_Python 3.x_Scrapy_Anaconda - Fatal编程技术网

从节点子进程运行带有scrapy导入的Python脚本

从节点子进程运行带有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

我正在尝试使用一个简单的scraper来收集数据,并希望使用Python Scrapy。应用程序的其余部分将通过Nodejs/Express完成,因此我想在需要新数据时按需调用此脚本

python代码通过piecharm在本地运行得很好,但是当它作为脚本运行时,我看到了一些问题

  • 通过节点,当我在本地运行服务器并点击/name时,它会失败,并显示“没有名为'scrapy'的模块”
  • 当我通过Anaconda提示符运行服务器时,它工作正常,并且scrapy导入时没有错误
  • 我已经通过conda在express server运行1和2的位置安装了scrapy
  • 从我所读到的内容来看,这可能与scrapys对Twistedreactor的需求有关,但由于我是Python新手,我不清楚anaconda终端有什么不同之处,以及为了使用scrapy,我需要从节点端正确地做些什么

    Nodejs:

    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二进制文件。