我在考虑像Jython/Jango这样的东西?这存在吗?或者Jython是否允许你做所有事情 - 包括Django在内的Java中的Python(我不确定Jython与Python的不同之处)?
从Eclipse插件运行时,我很难让jython正常工作.我有一个简单的对象工厂,它加载符合Java接口的python模块.所有这些在独立模式下都能正常工作.但是,当我将其打包为eclipse插件时,我会根据一些变量得到不同的错误:
鉴于我的java包是com.foo.
1)如果我在没有修改任何路径的情况下运行,我得到:"没有名为foo的模块"
2)如果我然后使用以下命令将我的java jar添加到sys.path:
PythonInterpreter interp = new PythonInterpreter(null, new PySystemState());
PySystemState sys = Py.getSystemState();
sys.path.append(new PyString("myjar..."));
Run Code Online (Sandbox Code Playgroud)
我明白了:
a)我的python模块的构造函数被调用(在
constr中打印出来)b)我从调用tojava返回一个PySingleton.名称字段为"错误".
3)此时,我尝试使Eclipse中的类路径与Standalone完全相同,因此我在运行时在调用python解释器之前将我的jar添加到类路径中.
我得到了我最喜欢的错误消息:SystemError:自动代理初始化应该只发生在代理类上
这个让我发疯.我对独立模式的速度有多快感到印象深刻.在Eclipse下运行应该有那么大的不同吗?我认为它应该只是类路径的问题,但到目前为止,似乎并不是这样.
如何为我的Jython程序设置JVM内存限制(Java的-Xmx选项)?
我知道Jython 2.5引入了-J选项以便向JVM发送选项:
jython -J-Xmx8000m
Run Code Online (Sandbox Code Playgroud)
但是,我必须在java1.6.0_23上使用Jython 2.2a0,它没有该选项.
如何通过http将文件下载到我的服务器上的本地文件夹中jython(或python)
以下代码可能有效
os.chdir("/path/to/change/to")
from urllib2 import urlopen
f = urlopen("http://some.server/some/directory/some.file")
Run Code Online (Sandbox Code Playgroud)
但为此我的当前工作目录已更改.我想要在当前工作目录中并将文件下载到我的服务器上的任何给定路径.
有帮助吗?
我正在尝试在我的Mac(Snow Leopard)上安装Jython.安装程序提示我安装它
/Users/myusername/jython2.5.2
Run Code Online (Sandbox Code Playgroud)
然而,这似乎是一个不适合安装解释器核心,库模块等的地方......
关于哪里可能是更合适的文件夹的任何建议......怎么样
/User/bin/jython2.5.2
Run Code Online (Sandbox Code Playgroud)
这样做会有副作用吗?
我是一名自学成才的程序员,没有接受过正规培训,如果这是一个愚蠢的问题,请提前原谅我.
在Python编程时我发现了一些奇怪的东西:
from someModule import someClass
def someFunction():
someInstance = someClass()
print "foo"
del someClass
someFunction()
Run Code Online (Sandbox Code Playgroud)
这会立即死于未绑定的局部变量错误:
UnboundLocalError: local variable 'someClass' referenced before assignment
Run Code Online (Sandbox Code Playgroud)
注释掉删除语句可以解决问题:
...
#del someClass
...
Run Code Online (Sandbox Code Playgroud)
它返回:
foo
Run Code Online (Sandbox Code Playgroud)
那么,2个问题:
1)del语句位于函数的末尾.为什么在开始之前调用它?
2)为什么它给我一个"未绑定的局部变量"错误?它不应该是一个"未绑定的全局变量"错误吗?
我有这个功能:
def ngrams(word):
for i in range(1, len(word) + 1):
yield word[:i]
Run Code Online (Sandbox Code Playgroud)
..我得到了一个错误
2012-03-09 19:37:31,928 ERROR worker-bootstrap: Error running worker process
net.grinder.scriptengine.jython.JythonScriptExecutionException: SyntaxError: ('invalid syntax', ('C:\\grinder-3.7.1\\lib
\\.\\nb-romg-file-store\\current\\grinder_test.py', 72, 15, ' yield word[:i] '))
(no code object) at line 0
Run Code Online (Sandbox Code Playgroud)
有没有办法让yield工作?我在jython控制台中尝试了相同的功能- 如果正常工作.
我正在尝试在Jython中编写一个简单的记录器,我似乎无法在线找到任何有用的示例.
我查了http://www.jython.org/docs/library/logging.html,但代码似乎对我不起作用.
我只想要一个简单的循环,每隔30秒将带有时间戳和消息(日志编号/计数)的字符串记录到日志文件中.我在Windows中使用Sikuli执行此操作.
日志消息示例:
2012-04-26 13:25:51 message number 75
Run Code Online (Sandbox Code Playgroud)
谁能帮我吗.
提前致谢,
马尔万
PS - 我之前从未使用过Jython.
我有一个列表,我需要在字典中.该列表具有重复(即将成为)具有不同值的键.如何找到这些键并将新值附加到它?
list=[q:1,w:2,q:7]
dictionary= q:1,7
w:2
Run Code Online (Sandbox Code Playgroud)
提前致谢
我继承了一个大型Java/Scala代码库,它使用Jython与我们同样大的Python代码库进行交互.直到大约三天前突然所有的构建在Jython阶段开始失败时,情况仍在顺利进行:
RuntimeException:java.lang.RuntimeException:方法代码太大了!
事实证明,JVM内部方法的大小内部限制为65kb.最新版本的Python请求似乎是罪魁祸首,这是我们Python代码库的重要依赖.我的猜测是,最新版本在某处引入了一个非常大的类.
最明显的解决方案是将请求库版本固定到早期版本.我应该固定Python代码的所有库版本(就像我在Java中那样)吗?除版本固定外还有其他工作吗?我冒了太大的风险吗?