XCode/Swift和Python文件-要在XCode项目中嵌入Python.py文件吗
我想创建一个Swift应用程序,使用PythonKit调用一些嵌入的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. 此路径是硬编码的,当我使用自己的路径执行此操作时,它会起作用 但是,当这些文件位于同一个项目目录中
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”。无论如何,现在再次感谢你。我会试试这个。