Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.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
XCode/Swift和Python文件-要在XCode项目中嵌入Python.py文件吗_Python_Swift_Xcode - Fatal编程技术网

XCode/Swift和Python文件-要在XCode项目中嵌入Python.py文件吗

XCode/Swift和Python文件-要在XCode项目中嵌入Python.py文件吗,python,swift,xcode,Python,Swift,Xcode,我想创建一个Swift应用程序,使用PythonKit调用一些嵌入的Python.py文件 在文档和示例文件中,它说我应该使用 let sys = Python.import("sys") sys.path.append("/Users/mlboy/PythonTest/") // path to your Python file's directory. 此路径是硬编码的,当我使用自己的路径执行此操作时,它会起作用 但是,当这些文件位于同一个项目目录中

我想创建一个Swift应用程序,使用PythonKit调用一些嵌入的Python.py文件

在文档和示例文件中,它说我应该使用

let sys = Python.import("sys")
sys.path.append("/Users/mlboy/PythonTest/") // path to your Python file's directory.
此路径是硬编码的,当我使用自己的路径执行此操作时,它会起作用

但是,当这些文件位于同一个项目目录中时,我如何相对地从项目中访问它们,所以我不需要任何硬编码文件

我认为这很容易,所以我尝试了

sys.path.append("./myPythonFiles/")
sys.path.append("./pythonTest/myPythonFiles/")
还有一些。 但都没有起作用。在谷歌上搜索了一番后,我找不到解决办法

建议


谢谢。

我花了一周的时间才想出一个解决方案来满足我类似的需求。我正在制作一个命令行工具,但我想将(唯一的)Python代码与它捆绑在一起。我还想在Xcode中调试,而不是在大多数情况下从与调试器断开连接的命令行部署和运行。因此,我的命令行工具初始化一个主结构(BpK),它初始化另一个执行Python调用的结构PyRunner(首先声明为静态变量bpPy:PyRunner!=nil)。我的实验字符串仍然包括在内,因为这是WIP。我希望它能演变成更优雅的东西

public init() {
    let bundlePyURL = Bundle.main.url(forResource: "Python/.../sample", withExtension: "py") ??
        Bundle.module.url(forResource: "Python/.../sample", withExtension: "py")
    BpK.bpPy = PyRunner(libDirPath: undlePyURL!.deletingLastPathComponent().path)
}
然后在赛跑中

`sys.path.append(libDirPath)
let example = Python.import(function)`

非常感谢。我想我明白你的意思了。但这是一个问题。”“sys.path.append”是一个(在解释器生命周期内)Python调用,但“let example…”是一个swift调用;如何将其合并到一个函数/文件中?或者你喜欢我先“让sys=Python.import(“sys”)”顺便说一句,我发现我必须升级到Swift 5.3才能使用bundle.module.url。另外,在“init()”中,在“undlePyURL”之前遗漏了一个“b”。无论如何,现在再次感谢你。我会试试这个。