我不能在 Swift 中使用 Python 模块

Posted

技术标签:

【中文标题】我不能在 Swift 中使用 Python 模块【英文标题】:I can't use Python module in Swift 【发布时间】:2018-11-07 10:26:39 【问题描述】:

我在 Playground 文件中尝试了以下代码。

import Python
let np = Python.import("numpy")  

然后,我收到以下错误。

模块“Python”没有名为“import”的成员

我对此执行应用了以下解决方案。

swift playground error: module 'Python' has no member named 'import' Call Python code from an existing project written in Swift

在特殊情况下,我找不到“运行时搜索路径”,所以我没有应用与之相关的解决方案。 但作为解决方案的问题,我应该能够运行此代码而无需在运行时搜索路径中输入任何内容。 命令行版本也会出现这个问题。 它是如此神秘,以至于我想知道这个故事,“你可以在 Swift 中使用 Python!”是愚人节的假货。

请帮助我摆脱幻觉!

Xcode:10.1 斯威夫特:4.2.1

【问题讨论】:

如果您已将 XCode 的工具链设置为 Swift for TensorFlow(确保使用最新快照)并确保在设置新工具链后重新启动 XCode,它应该已经可以工作了。 您是如何让import Python 工作的? 【参考方案1】:

一年后,我找到了解决方案。 模块名称错误。

import PythonKit
let np = Python.import("numpy")

我应该在this way 上安装并完全实现this way。

谢谢问候!

Xcode:11.3.1 斯威夫特:4.2 工具链:Swift for TensorFlow 0.8 发布

【讨论】:

为了了解这方面的内容,我们最初在 Swift for TensorFlow 工具链中使用了 import Python,但它产生了命名冲突。在 Swift for TensorFlow 工具链之外,PythonKit 是提供此功能的模块。在我们的 0.8 版本中,我们切换到使用 import PythonKit 以保持这种用法的一致性。很抱歉造成混乱。 @BradLarson 问题是现在这需要更新到所有文档(包括 Swift 的项目),其中使用旧的 import Python @wizofe - 在 Swift for TensorFlow 项目之外,PythonKit 应该是获得 Python 功能的手段。我们一直在使用 #if canImport(PythonKit) 逐步转换我们的笔记本,并回退到旧的 Python 命名。我们很快就会删除旧的 Python 模块引用,因为人们已经有足够的时间迁移过来了。 谢谢@BradLarson!我在浏览 Swift for TensorFlow 项目中的一些示例时遇到了与这篇文章相同的问题!无论如何,这是一个非常令人兴奋的,所以继续努力+1

以上是关于我不能在 Swift 中使用 Python 模块的主要内容,如果未能解决你的问题,请参考以下文章

我无法使用 PythonKit 在 Xcode 11 中导入 Python 模块

使用 Swift 5.1 编译的模块不能被 Swift 5.1.2 编译器导入

(Swift Playground 模板)使用 Swift 5.1 编译的模块不能被 Swift 5.1.3 编译器导入

我不能在 xcode 中使用模块 Alamofire

为啥我不能在类方法中使用 python 模块 concurrent.futures?

Python模块之: configobj(转)