我正在研究一个稍后将部署在servlet容器中的小型django项目.但是如果我使用cPython而不是Jython,开发会快得多.所以我想要做的是测试我的代码是否在我的settiings.py中的cPython或Jython上运行,所以我可以告诉它使用适当的db驱动程序(postgresql_psycopg2或doj.backends.zxjdbc.postgresql).有一个简单的方法吗?
我正在构建一个Java框架,它将监听事件,然后在Jython中处理它们.不同的事件类型将被发送到不同的脚本.
由于在调用PythonInterpreter.exec()时jython需要相当长的时间来编译脚本,因此我必须预编译脚本.我是按照以下方式做的:
// initialize the script as string (would load it from file in final version)
String script = "print 'foo'";
// get the compiled code object
PyCode compiled = org.python.core.__builtin__.compile( script, "<>", "exec" );
Run Code Online (Sandbox Code Playgroud)
PyCode编译对象将被推送到存储库并在事件进入时使用
PythonInterpreter pi = new PythonInterpreter();
pi.set( "variable_1", "value_1");
pi.set( "variable_x", "value_x");
pi.exec( compiled );
Run Code Online (Sandbox Code Playgroud)
现在,对于我的难题 - 可能会发生某些类型的多个事件同时发生 - 因此同时运行多个脚本实例.
几乎所有脚本都可能保持短暂 - 最多100行,没有循环.数字和频率是完全随机的(用户生成的事件),每个事件类型可以是每秒0到大约200.
最好的方法是什么?我正在寻找一些可能性:
2号和3号的组合可能是最好的 - 创建动态池大小?
那么,有什么想法吗?;)
我正在调用ant的脚本.我从调用者那里得到它作为单个字符串,但python奇怪地把它当作两个单独的字符串.我有脚本在Windows中用它的路径读取文件名.文件夹结构可以在其间或可以不具有空格
这是一个例子
test.py D:/test/File Name
我知道这可以使用optparse来完成.有没有什么方法可以将param作为单个参数读取,就像我想在sys.argv [index]中获取它一样(作为单个字符串).我已经厌倦了'和'前缀,但没有成功.
我正在考虑为数字硬件设计制作某种实验性IDE.所以我无法决定选择巫婆平台.
我将使用带语法高亮的文本编辑器,一些矢量图形和许多选项卡式窗口.
我的目标:1.使用尽可能少的自定义组件来使用GUI.2.使其尽可能跨平台
(我已经知道CPython和Jython是跨平台友好的,但是IronPython + Mono呢?)
所以 - 问题是关于GUI - 我应该选择什么?
我最初将所有模块放在一个包中.我最近在原始包中创建了一个子包,并将一些模块移动到该包中.我的src文件夹和2个包文件夹都在我的PYTHONPATH中.
自从我重新定位这些模块后,我对其.py文件所做的更改似乎没有进入生成的*$ py.class文件中,我相信这些文件最终会被运行,基于print __FILE__吐出的内容.
.class文件位于顶级包的目录中,我相信这是因为它们从第一个位置导入的是位于该包中的模块.所以我认为他们在正确的地方.
将模块移回顶级软件包确实会使问题消失,但被迫将所有模块放在一个软件包中并不是一个解决方案.我是否需要做一些事情来将一个模块"注册"为一个包的一部分,而不是将它放在一个带有__init__.py?的文件夹中?
注意:这个问题的其余部分只是导致我在更改.py文件时得出结论是没有更新.class文件的症状.你可以跳过它,如果你是一个人;博士的人:P
我在函数的开头放了一堆空格,当我单步执行它时,光标会跟随代码所在的位置.
以下是IDE向我展示的代码:

这里是本地变量(注意self没有任何约束):

在我走几行之后,这里是代码(注意光标位置):
和当地人:

注意,现在self已id和updatePeriod约束,因此这些前两行代码的空白之后,已经清楚地被执行.
如果我完全删除.py文件(粘贴在桌面上或其他东西),那么显然IDE无法找到它,所以我无法单步执行它,但程序根据以前的代码运行(那里)是一些明显的变化,我可以告诉他们没有效果).
最后,在相关的*$ py.class文件的修改日期是约4.5小时的时候,尽管这一切摆弄我一直在最近过去的小时或2的.py文件做.
现在我已经把头撞到了墙上几天,试图解决这个问题.我一直在开始使用Jython进行快速原型设计.我已经看到了一个看起来非常基本的问题,但我似乎无法超越它.
我是在JythonBook的10章,并击中了问题,当我试着写,并使用了"滩"级(在标有"清单10-1"一节开始).我可以导入并使用java.lang.Math就好了,但无法让"Beach"类为我的生活工作.我写了Beach类,把它变成了一个jar并改变了权限,
jar cf Beach.jar Beach.java chmod 777 Beach.jar
并确保Beach.jar和Beach.java都在当前的工作目录中,以及/ Library/Java/Extensions /(我在Mac上) - 没有骰子.
我只是想不出可能是什么问题.我希望有人会在这里看到我错过的东西.
为了您的方便,我认为从"实时"Jython会话中可能有用的一切:
$ jython
Jython 2.5.2 (Release_2_5_2:7206, Mar 2 2011, 23:12:06)
[Java HotSpot(TM) 64-Bit Server VM (Apple Inc.)] on java1.6.0_24
Type "help", "copyright", "credits" or "license" for more information.
>>> ## First try importing "Math" from Java:
>>> from java.lang import Math
>>> Math.max(4, 7)
7L
>>> ## Try System from Java:
>>> javasystem.out.println("Hello")
Traceback (most recent call last):
File "<stdin>", line 1, in …Run Code Online (Sandbox Code Playgroud) 我是一名前C++程序员,他最近发现了(并且贬低了)Python.我花了一些时间才能合理地熟练使用Python,但是我遇到了一些令人不安的现实,可能导致我把它作为我选择的语言,至少目前是这样.我写这篇文章是希望那里的人可以通过说服我在python宇宙的范围内轻易绕过我的担忧来说服我.
我在寻找一种灵活的语言时选择了python,这使我能够在各种平台上快速构建端到端的工作系统.其中包括:
- Web服务
- 移动应用程序
- 用于PC的跨平台客户端应用程序
开发速度在当前优先于执行速度.但是,为了在不需要重大写入或架构更改的情况下提高性能,我认为必须能够轻松地与Java进行交互.这样,我可以使用Java在应用程序扩展时优化特定组件,而不会丢弃任何代码.
据我所知,我对具有大型开发人员基础的企业级,平台无关,快速语言的要求意味着它必须是Java.由于各自的限制,.NET或C++不会削减它.对于大多数移动平台而言,Java显然也是最重要的.
不幸的是,悲惨的是,似乎没有一种好方法可以满足所有这些要求.
Jython原则上似乎是我正在寻找的东西,除了它似乎几乎死了,没有人在很大程度上发展,支持或使用它.而且Jython似乎与Java库结合得太多,因为你不能使用它的许多CPython标准库,这对你最终编写的代码有重大影响.
我能看到的唯一其他选项是使用包装在编组类中的JPype,虽然看起来很痛苦但可能会起作用,我想知道从长远来看它是否值得.
另一方面,我正在寻找的所有东西似乎都可以通过使用JRuby获得,这似乎更好地支持.事实上,我认为这是我最好的选择.我很难过,因为我非常喜欢Python的一切,包括语法.在可读性方面,Ruby中的perl式构造只是向后退了一步,但最终在Ruby中也可以获得python的大多数好处.
所以我问你 - 我在这里错过了什么?我所说的大部分内容都是基于我所阅读的内容,所以对当前版本的总结是准确的,或者是否有一些神奇的解决方案可以解决这些问题并让我轻松地留在这里我快乐的蟒蛇的地方?
谢谢你的帮助!
GS.
我正在开发大量用于管理WAS基础架构的脚本,而且我得到的印象是,IBM的某个人已经搞砸了wsadmin.这不是一个意外.
这是一个"简单"的例子:
for node in AdminConfig.list('Node').splitlines():
nodeName = AdminConfig.showAttribute(node, 'name')
for srv in AdminConfig.list('Server', node).splitlines():
if AdminConfig.showAttribute(srv, 'serverType') == 'APPLICATION_SERVER':
serverName = AdminConfig.showAttribute(srv, 'name')
prop = AdminConfig.getid('/Node:%s/Server:%s/JavaProcessDef:/JavaVirtualMachine:/Property:java.awt.headless/' % (nodeName, serverName))
if prop:
AdminConfig.modify(prop, [ ['value','true'] ])
else:
jvm = AdminConfig.getid('/Node:%s/Server:%s/JavaProcessDef:/JavaVirtualMachine:/' % (nodeName, serverName))
AdminConfig.create('Property', jvm, [ ['name', 'java.awt.headless'], ['value', 'true'] ], 'systemProperties')
Run Code Online (Sandbox Code Playgroud)
以上脚本不仅无法维护,而且难以理解.该wsadmin工具是一个只写工具!一个人写一个脚本,第二天就无法理解它是如何工作的,甚至是它的作用!
这样不容易吗?:
for node in list('Node'):
nodeName = node.name
for srv in node.list('Server'):
if srv.serverType == 'APPLICATION_SERVER':
jvm = srv.processDefinitions[0].jvmEntries[0]
jvm.createOrModify('Property', { 'name': 'java.awt.headless' …Run Code Online (Sandbox Code Playgroud) 我有一个包含以下代码的gui.py文件:
from javax.swing import JFrame, JPanel, Box, JComboBox, JSpinner, JButton, JLabel, SpinnerNumberModel, WindowConstants
from java.awt import BoxLayout, GridLayout
class SettingsWindow:
def start( self ):
selected = self.combobox.selectedIndex
if selected >= 0:
self.map = self.map_list[ selected ]
self.games = self.spinner.getValue()
def __init__( self, map_list ):
frame = JFrame( "Settings" )
frame.setSize( 200, 250 )
frame.setLayout( BoxLayout() )
panel = JPanel( GridLayout( 3, 1 )
# Map Combobox
self.map_list = map_list
self.combobox = JComboBox( self.map_list )
map_box = Box( BoxLayout.X_AXIS )
map_box.add( …Run Code Online (Sandbox Code Playgroud) 有一个名为JyNI的项目允许您在Jython中运行NumPy.但是我没有遇到过如何让NumPy进入Jython的任何地方.我试过'pip install numpy'(这适用于普通的python 3.4.3)但是给出了一个关于缺少py3k模块的错误.有没有人有关于此的更多信息?