簡體   English   中英

在nodejs pyshell中導入已安裝的python包時出錯

[英]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-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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM