我不能在 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 编译器导入