我最初将所有模块放在一个包中.我最近在原始包中创建了一个子包,并将一些模块移动到该包中.我的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文件做.
我有一个包含以下代码的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) 在Jython中使用(伪)随机数时,使用Python随机模块或Java的随机类会更有效吗?
我查看了其他帖子和错误报告,但无法弄清楚导致这种情况的原因.我在Eclipse的Java项目(Ubuntu 8.10)中使用Jython 2.5.1.它已作为一个独立的.jar文件添加到项目中(我只是用这个替换了旧的Jython 2.1 jar).
我正在运行一个使用threading.py类的脚本.在某些时候,语句"import os"是从linecache.py评估的,我得到了这个错误,我似乎无法弄清楚如何修复:
'Execution failed. Traceback (most recent call last):
File "<string>", line 1, in <module>
File "../lib/python/threading.py", line 6, in <module>
import traceback
File "../lib/python/traceback.py", line 3, in <module>
import linecache
File "../lib/python/linecache.py", line 9, in <module>
import os
ImportError: No module named os'
Run Code Online (Sandbox Code Playgroud) 我来自Java世界,对Jython来说是全新的.
是否可以在Eclipse中使用同一项目中的Jython和Java类创建项目?我尝试这样做 - 编写一个简单的Java类并在Jython模块中使用它 - 在编码过程中一切都很顺利.但当我尝试运行该项目时,我得到:
Traceback (most recent call last):
File "/home/bahman/Work/Jython/TestJython/src/com/bahmanm/Main.py", line 1, in <module>
from com.bahmanm import Greeter
ImportError: cannot import name Greeter
Run Code Online (Sandbox Code Playgroud)
Java类是:package com.bahmanm;
public class Greeter {
private String msg;
public Greeter() {
msg = "Hello, ";
}
public void greet(String name) {
System.out.println(msg + name);
}
}
Run Code Online (Sandbox Code Playgroud)
而Jython模块非常简单:
from com.bahmanm import Greeter
g = Greeter()
g.greet("Bahman")
Run Code Online (Sandbox Code Playgroud)
我很感激任何想法/提示.
我有一个讨厌Java的历史,在90年代末的"慢球"时代经常使用它.因此,我从未真正学到它.据我所知,Java实际上是一种非常好用的语言.我一直在考虑因为Jython和Clojure而潜入它.也就是说,我想用Java编程并在适当的地方使用内联Jython或Clojure.但说实话,我可能只是在Jython/jRuby中编程并从那里调用clojure.
这让我想到了我的问题.我知道这两种语言都可以从Java调用,但这是否一定是好的做法?如果我只想使用Jython作为主要语言,我是否应该费心学习java?看到这是我的动机中的很大一部分,我想知道在进入之前我并没有被误导.我知道如果用多种语言进行项目成为一个kludge的风险很高像这样.
我还在学习JVM之类的东西,所以如果这个问题很明显,我会道歉.
我在Java项目中使用Jython.
我有一个Java类:myJavaClass.java和一个Python类:myPythonClass.py
public class myJavaClass{
public String myMethod() {
PythonInterpreter interpreter = new PythonInterpreter();
//Code to write
}
}
Run Code Online (Sandbox Code Playgroud)
Python文件如下:
class myPythonClass:
def abc(self):
print "calling abc"
tmpb = {}
tmpb = {'status' : 'SUCCESS'}
return tmpb
Run Code Online (Sandbox Code Playgroud)
现在问题是我想abc()从myMethod我的Java文件的方法调用我的Python文件的方法并打印结果.
我正在研究一个框架,其中一部分需要Jython.我刚刚使用MatPlotLib添加了一些绘图,但没有意识到MatPlotLib与Jython不兼容.由于这两个部分相当孤立,我可以很好地运行Python中的大部分程序并将少量信息传递给Jython部分(反之亦然),我想知道是否有一种简单的方法可以做到这一点,而保持框架的模块化特性.想法?
我在Java应用程序中使用Python ScriptEngine来执行导入各种其他Python脚本的Python脚本.
一旦主脚本成功完成并且eval方法返回,我将引擎对象引用设置为null并调用垃圾收集器.
接下来,我将编辑主脚本导入的一个脚本并保存.
接下来我通过创建一个新的ScriptEngine对象并调用eval来运行该方法来执行主Python脚本,但是当主脚本运行时,它不会获取对我所创建的导入脚本的更改.
显然导入的脚本是通过某种东西缓存的(也许是Jython?).
我不想在Python脚本中调用reload.必须有一种方法可以告诉正在进行缓存的任何内容以刷新或清除自身.
有人找到了解决这个问题的方法吗?我在Windows 7上使用NetBeans 8.0.2,Java 1.8 update 45和Jython 2.7.这是java代码.除了import语句之外,python脚本包含什么并不重要.
ScriptEngineManager scriptEngineManager = new ScriptEngineManager();
ScriptEngine engine = scriptEngineManager.getEngineByName("python");
Object result = engine.eval();
engine = null;
System.gc();
Run Code Online (Sandbox Code Playgroud) 我在Windows上开发了一个使用此代码的sikuli python脚本:
from socket import AF_INET, SOCK_DGRAM
import sys
import socket
import struct, time
host = "pool.ntp.org"
port = 123
buf = 1024
address = (host,port)
msg = '\x1b' + 47 * '\0'
# reference time (in seconds since 1900-01-01 00:00:00)
TIME1970 = 2208988800L # 1970-01-01 00:00:00
# connect to server
client = socket.socket( AF_INET, SOCK_DGRAM)
client.sendto(msg, address)
msg, address = client.recvfrom( buf )
t = struct.unpack( "!12I", msg )[10]
t -= TIME1970
current_time = time.ctime(t).replace(" "," ")
Run Code Online (Sandbox Code Playgroud)
代码在linux下或在Windows上的python脚本中正常工作,但是如果我在Windows上的sikulix上使用此代码它会崩溃(在line => …