标签: qpython

QPython或Kivy用于使用Python进行Android编程 - 生成可安装的apk

在SO上阅读了几个Q&A之后,我意识到有一个选项,即QPython和Kivy为Android做编程,但是,显然两者都采用不同的方法.我试图验证我的理解,看看我是否遗漏了一些关键信息.

  • QPython允许使用Kivy库来开发图形应用程序
  • QPython和Kivy都使用SL4A,而QPython通过添加一些NFC和类似功能扩展了标准SL4A(或它的Python绑定)
  • QPython用于创建可以使用各种模块库的python脚本,但是它们需要安装QPython才能在目标设备上执行.没有办法将脚本打包到apk中.
  • Kivy OTOH允许开发人员使用他们的基于云的构建系统编写编译为apk的应用程序(替代方案 - 可以在Ubuntu Linux上设置本地构建系统)[ 但是,我注意到大多数使用Kivy的示例apk都非常大,在40MB范围内.我错过了什么吗?]
  • QPython apk有2个版本,一个用于Python-2.7,另一个用于Python-3.x.对于Kivy,我不确定它是哪个版本.
  • QPython示例脚本(HelloWorld.py)似乎没有按照预期行事,来自Market的最新QPython-3.x,在Android Kitkat(4.4.2)系统上.我得到了输入文本的对话框,但是我希望弹出一个Toast,但没有任何反应.
  • 让人觉得QPython和Kivy都是由一个开发者开发的(或者目前只有一个人真正活跃),而且还没有一个庞大的社区.[ 这是我最关心的问题 ]我注意到SO上有'qpython'标签有3-4个问题,'kivy'有超过千个问题!
  • 同时也给人的印象是,此时Kivy的开发有点活跃(也许非常活跃),但对于QPython,我没有清晰的画面.
  • 与QPython相比,Kivy似乎试图扩展可能使用它编写的应用程序的本质.像plyerpyjnius这样的API 有助于扩展可能性.与QPython相比,可能非常重要.
  • QPython和Kivy似乎都在大力开发中.似乎在两组工具上都报告了程序(/ script)崩溃(/失败).

总的来说,结果(上述观点)的观点似乎更倾向于Kivy.理解是否正确?我错过了任何关键点吗?这不是一个修辞问题,我只是在寻找事实答案.

python android sl4a kivy qpython

24
推荐指数
1
解决办法
3万
查看次数

如何在qpython3(python的Android端口)上安装模块

我在内部找到了这个很棒的模块,并将其作为zip文件下载.一旦我解压缩了zip文件,我将两个模块放在模块文件夹中的文件(setup和main文件)中,包括我需要运行的额外的read me文件.我尝试安装安装文件,但我无法安装它,因为控制台找不到它.所以我做了一些研究,我尝试使用pip来安装它,但这没有用.所以我想知道你是否有人能给我手动安装它和pip的步骤(请记住,需要安装setup.py文件才能使主模块工作).

谢谢!

python module qpython qpython3

12
推荐指数
1
解决办法
4万
查看次数

在Android的QPython控制台中访问命令历史记录

是否可以在QPython的控制台/ REPL中访问以前输入的命令?向上和向下箭头只显示转义序列.我尝试Terminal typescreen,linux和之间切换选项vt100,但这似乎没有帮助.

一个相关的问题没有指出它是指QPython的控制台,并得到了一个不相关的答案.

readline read-eval-print-loop qpython

9
推荐指数
1
解决办法
998
查看次数

使用QPython连接到接入点?

我的手机有一个简单的问题:当我从wifi热点断开连接时,我的手机不会自动重新连接,因为它总是认为没有互联网.这是因为我的防火墙.我猜测Android手机试图ping服务器以检查是否存在Internet连接.

所以我现在要做的就是编写一个简单的脚本,不断扫描Wifi网络,直到它找到我过去连接过的网络.
它可能是一个非常简单的脚本,但我找不到实际连接到接入点的方法.

import threading
import androidhelper
droid = androidhelper.Android()
knownAPs = ["home-wifi","workAP"]

def autoConnect():
    threading.Timer(5.0, autoConnect).start()
    droid.wifiStartScan()
    nearbyAPs = droid.wifiGetScanResults().result
    for i, curAP in enumerate(nearbyAPs):
        if curAP['ssid'] in knownAPs:
            # ?connect to a wifi?
autoConnect()
Run Code Online (Sandbox Code Playgroud)

我在文档中遗漏了什么吗?知道我怎么能做到这一点?

编辑:
据说可以在QPython中使用Kivy库.我找不到一个如何实现它的例子.但也许这个问题可以解决吗?

python android android-wifi sl4a qpython

7
推荐指数
1
解决办法
1521
查看次数

你能更新Python3的QPython3版本吗?

我想在Qpython3上安装biopython,但它说我有python 3.2并且需要3.3或更高版本.是否有更高版本的QPython3版本?我可以以某种方式更新它吗?-谢谢

python version python-3.x qpython qpython3

6
推荐指数
1
解决办法
1507
查看次数

QPython 上的 android.Android() 错误

我正在运行 SL4A Python 2.6.2 解释器。这段代码可以正常工作:

import android
droid = android.Android()
Run Code Online (Sandbox Code Playgroud)

但是当我在同一台机器上运行 QPython 2.7.2 解释器时,同样的代码给了我错误:

AttributeError: 'module' object has no attribute 'Android'
Run Code Online (Sandbox Code Playgroud)

python android sl4a qpython

5
推荐指数
1
解决办法
3286
查看次数

如何从Android中的Java代码执行Python脚本

我正在尝试使一个标准的Android应用程序执行一个可以将值返回给Java的python脚本,但我面临很多问题.

Jython在Android环境中不支持这一点,SL4A是一个死机项目,Kivi似乎是完全没有使用Java的完整堆栈框架,而QPython是适用于Android 5+但几乎没有文档的SL4A.

我想要的东西:

// From INSIDE my Java Code
new PythonEngine().execute('a = 1 + 1').getInt('a')
Run Code Online (Sandbox Code Playgroud)

使用QPython,我找到了一个执行任意代码的示例,但我无法想象如何获得结果以及如何在不打开等待用户输入返回的新活动的情况下运行脚本.

那可能吗?这个例子可以在这里找到QPython Java Sample

android jython sl4a kivy qpython

5
推荐指数
1
解决办法
1443
查看次数

如何在colaboaratory上安装模块?

我正在测试Googles colaboratory,我收到了一个错误

ImportError:没有名为qpython的模块

我知道,因为它是一个虚拟机,模块安装在那里但如果缺少一个是否有办法安装它?

谢谢!

python kdb qpython google-colaboratory

2
推荐指数
1
解决办法
176
查看次数

如何从 KDB 获取表或视图元数据并保存到数据结构?

我一直在尝试使用 python 从 KDB+ 数据库中获取元数据,基本上,我安装了一个名为qpython,并使用这个库我们连接和查询 KDB+ 数据库。

我想使用 python 在 KDB+ 数据库中存储表/视图的所有适当列的元数据。尽管尝试了多种不同的方法,但我无法分离元数据部分。

即一些将输出类型转换为列表/元组、使用迭代for等等。

from qpython import qconnection

def fetch_metadata_from_kdb(params):
    try:
        kdb_connection_obj = qconnection.QConnection(host=params['host'], port=params['port'], username=params['username'], password=params['password'])
        kdb_connection_obj.open()
        PREDICATE = "meta[{}]".format(params['table'])
        metadata = kdb_connection_obj(PREDICATE)
        kdb_connection_obj.close()
        return metadata

    except Exception as error_msg: 
        return error_msg

def fetch_tables_from_kdb(params):
    try:
        kdb_connection_obj = qconnection.QConnection(host=params['host'], port=params['port'], username=params['username'], password=params['password'])
        kdb_connection_obj.open()
        tables = kdb_connection_obj("tables[]")
        views = kdb_connection_obj("views[]")
        kdb_connection_obj.close()
        return [table.decode() for table in list(tables)], [view.decode() for view in list(views)]

    except Exception as error_msg:
        return error_msg …
Run Code Online (Sandbox Code Playgroud)

python kdb python-3.x qpython qpython3

2
推荐指数
1
解决办法
1500
查看次数

kdb 获取最近 1 小时的记录

我需要选择并获取与前 1 小时和 24 小时相关的行。为了处理 24 小时,我使用了这个代码。1小时怎么样 我怎样才能得到它?

yesterday = datetime.now() - timedelta(1)
yesterday = datetime.strftime(yesterday, '%Y-%m-%d')

q.sendSync('{[x;z]select from trades where DateTime > x,symbol=z}', np.datetime64(yesterday,'D'),  np.string_('ETH-USDT'))
Run Code Online (Sandbox Code Playgroud)

kdb 保存的数据帧

                     DateTime            symbol  
0     2022-04-13 12:59:00.171     b'ETH-USDT' 
1     2022-04-13 12:30:00.171     b'ETH-USDT'   
2     2022-04-13 10:55:00.171     b'ETH-USDT'       
3     2022-04-12 10:59:00.171     b'ETH-USDT'  
4     2022-04-10 10:53:00.185     b'ETH-USDT'  
5     2022-04-09 10:50:01.114     b'ETH-USDT'  
Run Code Online (Sandbox Code Playgroud)

kdb qpython

1
推荐指数
1
解决办法
524
查看次数

如何将数据帧作为新表提交到 kdb?

我知道这里已经回答了这个问题,但是作为一个新的 q-bie,我仍然对如何使用 q 创建和插入新表感到困惑。

我的问题:我有一个数据框,我正在使用 qPython 连接到 kdb。我想将此数据帧作为新表写入 kdb。

我的问题:似乎我可以做这样的事情:

df = pd.DataFrame({'sym':['abc','def','ghi'],'price':[10.1,10.2,10.3]})
with qconnection.QConnection(host = 'localhost', port = 5001, pandas = True) as q:
    q.sync('{t::x}',df)
Run Code Online (Sandbox Code Playgroud)

{t::x}这里是什么?不会是我的表名吗?x 会是什么?

如何指定列类型和大小限制或不需要它们?谢谢!

python kdb pandas qpython

0
推荐指数
1
解决办法
346
查看次数

查询完成后强制终止 q 会话

我试图在查询完成后强制终止(而不是关闭)aq 会话,以节省计算机上的资源。

目前它正在使用:

conn.sendAsync("exit 0")

问题是,如果我在它之后再次运行查询(尝试重新打开连接并运行另一个查询),它可能会失败,因为之前的连接仍会被终止asynchronous

因此,我尝试对synchronous查询执行相同的操作,但在尝试时:

conn.sendSync("exit 0")

我得到:

ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
python-BaseException
Run Code Online (Sandbox Code Playgroud)

我可以指定一个超时,以便 q 会话在 10 秒后自动终止,或者也许还有另一种方法来强制终止 q 会话?

我的代码如下所示:

conn = qc.QConnection(host='localhost', port=12345, timeout=10000)
conn.open()
res = None
try:
    res = conn.sendSync(query, numpy_temporals=True)
except Exception as e:
    print(f'Error running {query}: {e}')
conn.sendSync("exit 0")
conn.close()
Run Code Online (Sandbox Code Playgroud)

python asynchronous synchronous kdb qpython

-1
推荐指数
2
解决办法
321
查看次数