[英]error importing installed python packages in nodejs pyshell
我已經在我的 Ubuntu 18.04 服務器上使用pip
安裝了一個包。
當我進入終端並輸入以下內容時,一切正常:
$ python
>>> import <package-name>
我可以使用包函數等。
但是當我通過const PythonShell = require('python-shell');
Node.Js
實用程序,我得到ModuleNotFoundError: No module named '<package-name>'
( import <package-name>
代碼是我在 node.js 中使用 python shell 運行的 python 文件中的唯一內容)
什么可以解釋這種待遇差異?
您收到ModuleNotFoundError
是因為您沒有安裝python-shell
節點模塊。 你已經正確安裝了python。 假設您也正確安裝了 node/npm,您可以運行以下命令來安裝python-shell
節點模塊:
npm install python-shell
通過這樣做,您的模塊現在將解析。 請注意,來自pip
python-shell
包可在python
使用,但不能在節點腳本中使用。 要在節點腳本內部使用,您需要python-shell
節點模塊。 他們是兩種不同的東西。 pip
包不能在node
內部使用, npm
包不能在python
內部使用。
如果其他人陷入這些愚蠢的路徑問題,這是實際問題和我的解決方案。
問題是一些 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")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.