我已经在我的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)
什么可以解释这种治疗差异?
答案 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-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
路径导入库。
解决方案之一是
site-packages
复制到/usr/lib/
路径在代码顶部插入以下内容,以便在需要时仍可以通过pip
import sys
sys.path.insert(0, "/the/site-packages/path/you/want")