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

问题描述 投票:2回答:2

我在我的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运行的代码)

什么可以解释治疗的差异?

python node.js python-3.x ubuntu ubuntu-18.04
2个回答
1
投票

您正在获取ModuleNotFoundError,因为您没有安装python-shell节点模块。你正确安装了python。假设您也正确安装了node / npm,您可以运行以下命令来安装python-shell节点模块:

  • npm install python-shell

通过这样做,您的模块现在将解决。请注意,python-shell中的pip包用于python,但不能在节点脚本中使用。要在节点脚本内部使用,您需要python-shell节点模块。他们是两件不同的事。 pip包不能在node内使用,而npm包不能在python内使用。


0
投票

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

问题是一些python软件包是通过pip安装的,而其他软件包是通过apt-get安装的,python-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")
© www.soinside.com 2019 - 2024. All rights reserved.