Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从用Swift编写的现有项目调用Python代码_Python_Swift - Fatal编程技术网

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

从用Swift编写的现有项目调用Python代码,python,swift,Python,Swift,我需要一种在苹果平台上从Swift调用Python代码的方法。图书馆是理想的。我在谷歌上搜索了大量内容,找到的最接近的资料是Objective-C。如果有人对从swift调用python感兴趣,下面是我找到的一些有用资料: U python框架- PyObjC(更具挑战性一点)—— 鹅卵石 Python文档(您需要制作C-Swift桥) 大部分都是针对Objective-c的,但是如果你需要使用swift,你可以很容易地创建一个ObjC swift桥接器(超级简单)-查阅apple文档我发现

我需要一种在苹果平台上从Swift调用Python代码的方法。图书馆是理想的。我在谷歌上搜索了大量内容,找到的最接近的资料是Objective-C。

如果有人对从swift调用python感兴趣,下面是我找到的一些有用资料:

  • U python框架-
  • PyObjC(更具挑战性一点)——
  • 鹅卵石
  • Python文档(您需要制作C-Swift桥)

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

我发现了这一优秀且最新的要点,它可以引导你完成一个完整的解决方案:


如果您可以不使用NSTask启动Python进程,那么这也是一个不错的选择。

在Swift 4.2中,有一个经批准的特性,允许将动态语言直接移植到Swift中

将类似于:

  // 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)
在swift 5中,您可以尝试框架

下面是用法示例:

import PythonKit

let sys = try Python.import("sys")

print("Python \(sys.version_info.major).\(sys.version_info.minor)")
print("Python Version: \(sys.version)")
print("Python Encoding: \(sys.getdefaultencoding().upper())")

除了Obj-C和Swift之外,苹果不允许在任何地方用其他语言编写应用程序。你不太可能在这项工作中找到任何运气(即使你找到了一个黑客解决方案,应用商店也不允许这样做)。在删除的答案中(说真的,我们现在删除的答案包含了一个有用的文章链接?),至少有一个对OS X有用的链接:@oxguy3我认为这不一定是真的。从苹果签出此文档-有没有办法在iOS项目中使用此文档?似乎给出的链接描述了在macOS中使用它的步骤。@frogcjn-他们提到了如何在Apple doc@TommieC中使用其他版本。因为Python3框架并没有嵌入到系统库中,所以我尝试过,并没有那个么容易。该文档仍然只适用于Python2.7。这意味着Xcode 5.0是新版本,而不是Python3。它只在游乐场工作吗?”因为我在Xcode iOS项目中确实需要它,但它不知道什么是Python。@SerhiiPlash Swift是Swift,无论是在游乐场中使用还是编译为可分发的二进制文件。我一直试图用PythonKit加载自定义模块,但似乎做不到。你知道这应该如何(或是否)起作用吗?我可以使用
os.chdir()
os.getcwd()
访问安装模块的目录,但无法加载实际模块。我意识到我可以使用
sys.path.append()
将自定义目录添加到PYTHONPATH,但仍然无法加载自定义模块。我可以从终端加载它,所以模块应该很好。