7

我想用 Jython 运行 Python 脚本。

结果显示正确,但同时出现警告消息“sys-package-mgr*: can't create package cache dir”

我该如何解决这个问题?

先谢谢了~~~

4

4 回答 4

6

您可以通过在启动 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

于 2014-02-10T12:25:14.717 回答
5

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

2) 通过设置python.cachedir.skip = true

您可以阅读以下内容:

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

以获得进一步的见解。

于 2013-07-20T03:54:50.630 回答
1

诚然,使目录世界可写使问题“消失”,但是,它引入了一个巨大的安全漏洞。任何人都可以将代码引入将在用户的 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 用户的 umask 更改为 007。

$ sudo vi /etc/login.def

将 UMASK 更改为 007(从 022)。UMASK=007

于 2014-01-31T16:27:15.280 回答
1

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

$ sudo chmod -R 777 /opt/jython/cachedir
于 2016-12-09T05:13:38.713 回答