问题 从用Swift编写的现有项目中调用Python代码


我需要一种在Apple平台上从Swift调用Python代码的方法。图书馆是理想的。我已经完成了大量的Google搜索,我找到的最接近的材料是Objective-C。


2051
2017-08-10 19:30


起源

除了Obj-C和Swift之外,Apple不允许使用任何部分的语言编写应用程序。你不太可能在这项努力中找到任何运气(即使你找到一个hacky解决方案,它也不会被允许在App Store上)。 - Hayden Schiff
在删除的答案中(严重的是,我们现在删除的答案包含一篇文章的有用链接?),至少有一个OS X的有用链接: practicalswift.com/2014/06/25/... - Epaga
@oxguy3我认为这不一定是真的。从苹果查看此文档 - developer.apple.com/library/ios/technotes/tn2328/_index.html- - Shaun


答案:


如果有人有兴趣从swift调用python,我发现这里有一些有用的资料:

其中大部分是针对Objective-c的,但是如果你需要使用swift,你可以很容易地创建一个ObjC-Swift桥(超级超级简单) - 查找苹果文档


5
2017-08-14 17:01



如何在python框架中使用Python 3? - frogcjn


我发现这个优秀且最新的要点可以引导您完成一个完整的解决方案: https://github.com/ndevenish/Site-ndevenish/blob/master/_posts/2017-04-11-using-python-with-swift-3.markdown

如果你可以通过使用NSTask来启动Python进程,那也是一个非常好的选择。


5
2018-06-18 16:54



有没有办法在iOS项目中使用它?似乎给定的链接描述了在macOS中使用它的步骤。 - thavasidurai


在Swift 4.2中,有一个批准的功能允许动态语言直接移植到swift中

https://github.com/apple/swift-evolution/blob/master/proposals/0195-dynamic-member-lookup.md

看起来类似于:

  // import pickle
  let pickle = Python.import("pickle")

  // file = open(filename)
  let file = Python.open(filename)

  // blob = file.read()
  let blob = file.read()

  // result = pickle.loads(blob)
  let result = pickle.loads(blob)

2
2018-04-04 20:28



它在服务器端swift中运行良好吗? - Sleeba Paul