使用Jython运行python脚本时,“sys-package-mgr *:无法创建包缓存目录”

时间:2013-07-20 03:48:47

标签: python jython

我想用Jython运行Python脚本。

结果显示正确,但同时有一条警告消息,“sys-package-mgr *:无法创建包缓存目录”

我怎么能解决这个问题?

提前谢谢~~~

4 个答案:

答案 0 :(得分:5)

1)通过更改权限以允许写入错误消息中的目录。

2)设置python.cachedir.skip = true

您可以阅读:

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

进一步了解。

答案 1 :(得分:5)

您可以将缓存目录的位置更改为您已阅读过的位置&通过设置" python.cachedir"来写访问权限。启动jython时的选项,例如:

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

答案 2 :(得分:2)

使目录世界可写成公认使问题“消失”,然而,它引入了一个巨大的安全漏洞。任何人都可以将代码引入到将在用户的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

答案 3 :(得分:1)

到目前为止我发现的最简单的解决方法是:

var cars = [];