首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Racket中使用Python库

在Racket中使用Python库
EN

Stack Overflow用户
提问于 2016-08-27 13:41:23
回答 3查看 2.8K关注 0票数 4

我可以在Racket中使用Python代码和库吗?我已经在PyonR (https://github.com/pedropramos/PyonR)中安装了DrRacket,所以我可以选择"#lang“并运行DrRacket代码。但是,如何为我的应用程序组合Racket和Python语言代码呢?

https://github.com/nurv/pnil,也有一个有限的Python翻译程序。球拍中有类似的东西吗?

编辑:正如评论中所建议的,我尝试了如下。文件"pysamples.rkt“中的python代码在DrRacket中工作得很好:

代码语言:javascript
复制
#lang python

def greet(name):
    print 'Hello', name

greet('Alfred')

输出:

代码语言:javascript
复制
Hello Alfred

我试着在球拍代码中使用上面的定义,但是它不起作用。以下是球拍代码:

代码语言:javascript
复制
#lang racket
; (require python/config) (enable-cpyimport!) ; ran this once; worked.

(#%require "pysamples.rkt")
(greet "Racket_code")

错误是:

代码语言:javascript
复制
greet: unbound identifier in module in: greet
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-28 17:33:33

据我所知,PyonR项目是最接近使用的使用方式。但是,请注意,用Python编写的Python库与作为C库之上的瘦Python层的Python库之间存在差异。正如你所经历的那样,后一种类型不起作用(至少据我所知--但佩德罗才是该问的人)。

如果您需要使用用X语言编写的库(因为X可以是Python),您可以使用X语言编写一个“侦听器”程序,该程序等待来自Racket程序的消息,当收到消息时,计算一个答案并将其发回给Racket程序。如何发送和接收消息取决于您,但一个简单的选项是有两个文件,一个是"R- to -X“,它的拍写和X读取,和另一个”X到R“,其中球拍接收到的信息。

这种方法有一些开销,但是如果计算时间比发送消息更长,那么它就是一个可行的解决方案。

票数 4
EN

Stack Overflow用户

发布于 2016-08-27 22:19:16

与自述相适应 --您可以导入python2.7包,但是您需要使用cpyimport。其中一个例子如下所示:

代码语言:javascript
复制
#lang python
cpyimport numpy as np
from "racket" import time

    def add_arrays(n):
        result = np.zeros((100,100))
        for i in range(n):
            result += np.random.randint(0, 100000, (100,100))
        return result

    print time(add_arrays(10000))

看一看代码,您可以导入一个纯python库,给出它在球拍路径中,并给出了#lang python的最高行。所有定义的都是导出的。

票数 4
EN

Stack Overflow用户

发布于 2017-01-28 01:54:31

前面的答案和评论解决了某些Python库的困难,但是如果您只对在Racket模块中使用纯Python文件中的函数感兴趣,请尝试如下所示:

在文件“greetings.py”中:

代码语言:javascript
复制
#lang python

def greet(name):
    print 'Hello', name

拍子:

代码语言:javascript
复制
#lang racket

(require python)
(py-import "greetings" as python-module)

(py-method-call python-module "greet" "Racket")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39181788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档