Jython 2.5 默认附带 JLine。
我更喜欢将交互式解释器与rlwrap一起使用。如果 JLine 处于活动状态,则 rlwrap 似乎不起作用。
在 Scala 中我会使用rlwrap scala -Xnojline.
Jython 是否有类似的选项来停用 JLine?
我必须在 Jython 中为 CCPS 编写一些代码(使用 jython 作为脚本接口的程序)。但是,如果我在编辑器中更改子模块,Jython 不会更新它们,除非我重新启动程序(启动时间太长)。SO测试和调整相对较慢。
我用谷歌搜索并找到了一篇文章,指出应该导入或重新加载子模块。因此,基本轮廓是:
def loader(module, part=None):
if not module in sys.modules :
if part == None:
exec("import "+module)
else:
exec("from %s import %s" % (module, part))
else :
exec("reload "+module)
Run Code Online (Sandbox Code Playgroud)
但是我有一个问题,模块是在本地加载的,这意味着我可以在loader()函数中访问该模块,但不能在我的主代码中访问。
两个问题:
在每次子模块更改后不重新启动 Jython 的情况下,在 Jython 中使用子模块测试某些内容的正确方法是什么?有没有办法动态生成全局变量,以便我可以导入全局命名空间?
(例如 exec("global %(mod)s = %(mod)s" % ({'mod':module}))
我有一个 3rd 方应用程序,它读取 utf-16-le 的 Unicode 文件。出于某种原因,它必须有一个 BOM,否则它不会读取文件。
我在编写这种编码的输出文件时遇到了很多困难,所以我想我会在这里记录我的解决方案,供其他可能遇到相同问题的人使用。
import codecs
mytext = "Help me"
with open("c:\\temp\\myFile.txt", 'w') as f:
f.write(codecs.BOM_UTF16_LE)
f.write(mytext.encode('utf-16-le'))
Run Code Online (Sandbox Code Playgroud)
我被以下线程中选择的“正确答案”严重误导了。
write('\ufeff')
Run Code Online (Sandbox Code Playgroud)
不会将所需的 BOM 标记写入文件(至少我使用 Python 2.7 时没有)您需要
write('\xff\xfe')
Run Code Online (Sandbox Code Playgroud)
我没有足够的声誉来发布它,所以我在将文件保存在 python 中的同时发布了我自己的 添加 BOM(unicode 签名)
我认为这与UCS-2 Little Endian, Java中的 Java Write 文本文件中的问题完全相同
我正在编写一个 Jython 项目来创建一个文本编辑器。数据模型完全用 Python 编写,并使用了诸如nose、jinja 和ply 等外部库。文本编辑器的 GUI 使用 Java Swing 库。我正在尝试使用 Maven 构建这个项目,并发现了这个有用的插件,我已经将它包含在我的 pom 文件中,如下所示:
<plugin>
<groupId>net.sf.mavenjython</groupId>
<artifactId>jython-compile-maven-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>jython</goal>
</goals>
</execution>
</executions>
<configuration>
<libraries>
<param>nose</param>
<param>ply</param>
<param>jinja</param>
</libraries>
</configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)
当我mvn package在项目中时,我收到一条成功的构建消息和一个 jar,并且所有 Python 模块都保存在由上面的 Maven 插件创建的文件夹中 target/classes/Lib。到目前为止一切顺利,但是当我尝试运行 jar 时,我无法让我的 Python 代码找到 Python 库并收到以下错误消息:
java -jar target/text_editor-0.0.1-SNAPSHOT.jar
Exception in thread "main" Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<string>", line 2, in <module>
File "__pyclasspath__/text_editor/main.py", …Run Code Online (Sandbox Code Playgroud) 有没有什么好的方法可以从 clojure 调用 python 作为使用 scipy、numpy、scikit-learn 等进行数据科学的一种手段?
我知道在 python 而不是 java 上运行的 clojure 的实现,但这对我不起作用,因为我还需要在我的项目中调用 java 库。我也知道 Jython,但我不知道将它与 Clojure 一起使用的干净方法。
我想在我的项目中使用 Clojure,因为我更喜欢它作为一种语言,但我不能否认 Python 拥有一个令人难以置信的社区,以及一些最漂亮、设计良好的库。
我想通过 RobotFramework 自动化一个 Android 应用程序,谁能帮我将 Appium 集成到 RobotFramework 中。
注意我在 jython 中使用 RobotFramework version3.0。
我正在尝试在 Windows 上运行 jython servlet。我什至无法运行最简单的 HelloWorld.py。我收到以下 500 错误:
message Servlet.init() for servlet [PyServlet] threw exception
...
description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.
exception
javax.servlet.ServletException: Servlet.init() for servlet [PyServlet] threw exception
...
cause mère
ImportError: Cannot import site module and its dependencies: No module named site
Determine if the following attributes are correct:
* sys.path: ['C:\\apache-tomcat-8.5.24\\webapps\\jython\\WEB-INF\\lib\\Lib', '__classpath__', '__pyclasspath__/']
This attribute might be including the wrong directories, such as from CPython
* sys.prefix: …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
class IncidentTag:
def __init__(self,tag):
self.tag = tag
def equals(self,obj):
return self.tag.equals(obj.tag)
def hashCode(self):
return self.tag.hashCode()
from java.lang import String
from java.util import HashMap
from java.util import HashSet
tag1 = IncidentTag(String("email"))
tag1copy = IncidentTag(String("email"))
tag2 = IncidentTag(String("notemail"))
print tag1.equals(tag1copy)
print tag2.equals(tag2)
print "Now with HashSet:"
hSet = HashSet()
hSet.add(tag1)
hSet.add(tag2)
print hSet.contains(tag1)
print hSet.contains(tag2)
print hSet.contains(tag1copy)
Run Code Online (Sandbox Code Playgroud)
输出为:1 1现在使用HashSet:1 1 0
但是,我原本期望最后一行也是真的(1).是否有一些我不知道的明显事物.
(是的,我知道我的equals方法和hashcode方法没有考虑到一些问题...它们是故意简单的,但如果问题导致这个问题,请告诉我)
您好,我正在参加编程课程,但完全被一个问题迷失了。我们需要采取两种声音,并将它们加在一起。但是第一个声音开始为全音量,第二个声音开始为静音,然后缓慢移动平衡直到第一个声音为静音,第二个声音为全音量。因此,我能够将声音放在一起,但是我不确定如何在声音过程中使它们变大。
def mergeSounds(s1, s2):
sr = int(getSamplingRate(s1))
newSound = makeEmptySound(getLength(s1), sr)
for t in range(getLength(newSound)):
sv1 = getSampleValueAt(s1, t)
sv2 = getSampleValueAt(s2, t)
setSampleValueAt(newSound, t, sv1 + sv2)
return newSound
Run Code Online (Sandbox Code Playgroud) 据我了解,Python 2字符串(类型str)不过是字节序列。如何将这样的字符串显式转换为Java字节数组?
天真的尝试不起作用:
from jarray import array
myStr = 'some str object'
myJavaArr = array(myStr, 'b') # TypeError: Type not compatible with array type
Run Code Online (Sandbox Code Playgroud)
我这样做的原因是,当Jython隐式将Python String转换为Java代码时,它错误地将其转换为Java String,因为它不知道的编码str。
jython ×10
python ×6
android ×1
appium ×1
audio ×1
clojure ×1
collections ×1
data-science ×1
hashset ×1
importerror ×1
java ×1
maven ×1
maven-plugin ×1
numpy ×1
python-2.7 ×1
readline ×1
servlets ×1
windows ×1