在nodejs pyshell中导入已安装的python包时出错

时间:2019-04-08 03:39:46

标签: python node.js python-3.x ubuntu ubuntu-18.04

我已经在我的Ubuntu 18.04服务器上使用pip安装了一个软件包。

当我进入终端并输入以下内容时,一切正常:

$ python
>>> import <package-name>

我可以使用软件包功能等。

但是当我通过const PythonShell = require('python-shell');中的Node.Js实用程序执行操作时,我得到了ModuleNotFoundError: No module named '<package-name>'import <package-name>代码是我正在运行的python文件中唯一的东西node.js中的python shell)

什么可以解释这种治疗差异?

2 个答案:

答案 0 :(得分:1)

由于没有安装a apple c cherry b berry 节点模块,因此得到ModuleNotFoundError。您已正确安装python。假设您还正确安装了node / npm,则可以运行以下命令来安装python-shell节点模块:

  • python-shell

这样做,您的模块现在将解决。请注意,来自npm install python-shell的{​​{1}}软件包可在python-shell中使用,但不能在节点脚本中使用。要在节点脚本中使用,您需要pip节点模块。他们是两回事。 python软件包不能在python-shell内部使用,pip软件包不能在node内部使用。

答案 1 :(得分:0)

万一其他人陷入那些愚蠢的路径问题中,这是实际的问题和我的解决方案。

问题在于,某些python软件包是通过pip安装的,而另一些软件包是通过apt-getpython-shell安装的,因此不会加载pip的软件包。

对于我的特定示例,我试图加载一个包,该包在我的计算机上位于

/home/ubuntu/.local/lib/python2.7/site-packages/ -> pip install
/home/ubuntu/.local/lib/python3.6/site-packages/ -> pip install
/usr/lib/python2.7/dist-packages/ -> apt-get install

由于某些原因,python-shell只能从/usr/lib路径导入库。

解决方案之一是

  1. 将库文件夹从您的site-packages复制到/usr/lib/路径
  2. 在代码顶部插入以下内容,以便在需要时仍可以通过pip

    来更新软件包
    import sys
    sys.path.insert(0, "/the/site-packages/path/you/want")