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

Alan Zhu

我现在正在使用Swift Package Manager。

使用它,我将PythonKit导入了我的Swift项目。

我现在无法使用PythonKit导入Python模块。

它要求我设置PYTHON_LIBRARY路径,但我不知道该怎么做。

谁能帮我?

//
//  ViewController.swift
//  VideoStream
//
//  Created by HeRo Gold on 7/20/19.
//  Copyright © 2019 TopAce. All rights reserved.
//

import UIKit
import PythonKit

let sys = Python.import("sys")

class ViewController: UIViewController {

    @IBOutlet weak var netflixView: WKWebView!
    let netflixURL = URL(string: "https://www.netflix.com/login")

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        let pymsl = try Python.import(name: "pymsl")

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

当我在iPhone上运行iOS应用时,这是错误消息

致命错误:找不到Python库。使用Python库的路径设置PYTHON_LIBRARY环境变量。:文件/Users/herogold/Library/Developer/Xcode/DerivedData/VideoStream-cjytedddvtktmybclqlztmfdbekk/SourcePackages/checkouts/PythonKit/PythonKit/PythonLibrary.swift,第40行,
2019年7月20 23:55:00.967869 + 0800 VideoStream [31841:170718]致命错误:找不到Python库。设置PYTHON_LIBRARY环境变量以及Python库的路径。:文件/Users/herogold/Library/Developer/Xcode/DerivedData/VideoStream-cjytedddvtktmybclqlztmfdbekk/SourcePackages/checkouts/PythonKit/PythonKit/PythonLibrary.swift,第40行

CMill4

首先是这样的答案,所以请原谅格式/等。我经历了一段时间,遇到了不同的错误,但总体上是相同的问题。我希望这对您有帮助-需要考虑的一些资源:

1)Pyto-适用于iOS / Catalyst的完全嵌入式Python环境;带有LXML和Python库移植说明<-这是您需要在iOS上运行之后进行建模的方法,我的解决方案适用于Mac Catalyst (预装有Python的Mac)

2)Python Kit教程-这个人一步一步地介绍了如何实现PythonKit

这对我有用:

1)在签名和功能中禁用应用沙箱:

在“应用程序沙箱”的右上角的“签名和功能”下,有一个“ X”,单击以删除该应用程序沙箱

2)在“强化运行时”的“签名和功能”下:选中“禁用库验证”

禁用库验证复选框的图像

现在,我还没有根据这些规定向App Store提交应用,但是至少我的python文件和库可以加载/构建/运行!


更新05/15/2020:

对于Mac Developer Distribution,您将必须对应用程序中随附的所有.so或.dylib以及Python Interpreter和bin文件夹进行签名。开发完成后,我制作了一个快速的bash脚本来运行每个脚本。

function signThese() {
        find . -name "*.$1" | while read line; do
                codesign --force --verbose=4 --options=runtime --timestamp --sign "Developer ID Application: [INSERT YOUR CERT HERE]" $line
        done
}


这将允许您使用“签名和功能”中的AppSandbox以及所有强化的运行时选项(如不禁用库验证一样)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章