簡體   English   中英

使用Jython運行python腳本時,“sys-package-mgr *:無法創建包緩存目錄”

[英]“sys-package-mgr*: can't create package cache dir” when run python script with Jython

我想用Jython運行Python腳本。

結果顯示正確,但同時有一條警告消息,“sys-package-mgr *:無法創建包緩存目錄”

我怎么能解決這個問題?

提前謝謝~~~

1)通過更改權限以允許寫入錯誤消息中的目錄。

2)通過設置python.cachedir.skip = true

你可以讀到這個:

http://www.jython.org/jythonbook/en/1.0/ModulesPackages.html#module-search-path-compilation-and-loading

進一步的見解。

您可以通過在啟動jython時設置“python.cachedir”選項,將緩存目錄的位置更改為您具有讀寫訪問權限的位置,例如:

jython -Dpython.cachedir=*your cachedir directory here*

要么:

java -jar my_standalone_jython.jar -Dpython.cachedir=*your cachedir directory here*

你可以在這里閱讀python.cachedir選項: http ://www.jython.org/archive/21/docs/registry.html

讓目錄成為可寫的公認使問題“消失”,然而,它引入了一個巨大的安全漏洞。 任何人都可以將代碼引入到將在用戶的jpython環境中執行的現在可寫的目錄。

將cachedir設置為skip可能會導致性能下降(為什么實現緩存方案而不是提高性能)。

相反,我做了以下事情:

我創建了一個新組(在我的例子中是eclipse,但它可能是jpython)。 我將jpython的用戶添加到該組。

$ sudo groupadd eclipse

然后我將我的eclipse插件文件夾及其子組改為'eclipse'。

/opt/eclipse/plugins $ sudo chgrp -R eclipse *

然后我更改了組權限,如下所示

/opt/eclipse/plugins $ sudo chmod -R g+w *
/opt/eclipse/plugins $ find * -type d -print | sudo xargs chmod g+s

這個添加的組可寫,並遞歸地在所有目錄上設置S_GID位。 最后一位導致創建的新目錄與其父目錄具有相同的組ID。

最后一步是將eclipse用戶設置為007的umask更改。

$ sudo vi /etc/login.def

將UMASK更改為007(從022開始)。 UMASK = 007

到目前為止我發現的最簡單的修復方法是:

$ sudo chmod -R 777 /opt/jython/cachedir

暫無
暫無

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

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