[英]How do I tell IntelliJ IDEA where to find python packages for sublime text 2 plugin development?
[英]How do I tell SpringBoot where to find Python packages?
我已經在 Ubuntu 服務器 20.04 中安裝了幾個 Python 庫,例如名為“flair”的“ML”庫。
現在,雖然我可以運行 flair python 程序,例如,在 Ubuntu 20.04 服務器(Ubuntu 知道去哪里找)中的命令行運行良好,當我運行相同的邏輯時($python3 + " " + program path.py + “” + 數據路徑)來自 SpringBoot(一個 WAR 文件),我得到的消息是:
進口天賦
ModuleNotFoundError: No module named 'flair'
這種 Springboot 方法在 Windows 中運行良好,但我在 Ubuntu 中丟失了一些東西。
因此,我不確定 SpringBoot 在哪里尋找 Python 模塊(或一般)。 沒有名為“CLASSPATH”的環境變量,只有路徑。
但是,我更改了常規路徑變量以將 site-packages 文件夾包含在/home/ubuntu/.local/lib/python3.8/site-packages下,但這沒有任何區別。
我創建了一個 CLASSPATH 變量來查看是否有幫助,但是 SpringBoot(WAR 文件上下文)仍然沒有在 Ubuntu 路徑中找到包。
那么,我需要將 Python 模塊放在哪里,或者我如何通過環境變量或其他方法告訴 SpringBoot 它們現在在哪里?
謝謝,
通常,您需要兩件事:確保python
可執行文件在您的PATH
上可用,並且PYTHONPATH
包含flair
package 的位置,以便可以導入它。
使用Runtime.exec()
或ProcessBuilder
應該沒問題。 我選擇了ProcessBuilder
,因為它使用起來更方便。
這是一個代碼片段,它啟動了一個導入flair
的 python 腳本,然后打印當前工作目錄和sys.path
內容:
ProcessBuilder builder = new ProcessBuilder(
"python3",
"-c",
"import os; import sys; import flair; print(os.getcwd()); print(sys.path)"
)
.directory(new File("/home/user/tmp/flair"))
.inheritIO();
// I used one of the virtual envs available on my machine with flair installed
builder.environment().put("PYTHONPATH", ".venv/lib/python3.10/site-packages");
Process p = builder.start();
對我來說它打印:
/home/user/tmp/flair
['', '/home/user/tmp/flair/.venv/lib/python3.10/site-packages', '/usr/local/python@3.10/3.10.9/lib/python3.10', '/usr/local/python@3.10/3.10.9/lib/python3.10/lib-dynload', '/usr/local/lib/python3.10/site-packages']
當我刪除設置環境的行時,我收到錯誤消息,因為找不到 flair。
ModuleNotFoundError: No module named 'flair'
看看它是否適合你。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.