从Swift Cocoa的Xcode调用Bash运行Tensorboard时遇命令未找到错误
解决Xcode中调用Bash脚本找不到tensorboard命令的问题
这个问题我之前也碰到过,核心原因是Xcode启动的进程和你手动打开的终端拥有不同的环境变量(尤其是PATH):你在终端里能找到tensorboard,是因为它的安装目录已经被加入了终端的PATH,但Xcode默认不会继承终端的完整PATH配置,导致脚本执行时找不到对应的命令。
下面是几种靠谱的解决方法:
方法1:使用tensorboard的完整绝对路径
首先在终端里执行以下命令,找到tensorboard的实际安装路径:
which tensorboard
你会得到类似这样的输出(具体路径根据你的TensorFlow安装方式不同可能有差异):
/usr/local/bin/tensorboard
然后把脚本里的tensorboard替换成这个完整路径,比如:
/usr/local/bin/tensorboard --logdir tf_files/training_summaries &
这种方法最直接,也不容易出错。
方法2:在脚本开头手动配置PATH
如果你脚本里还有其他类似的命令也找不到,可以在脚本的最开头添加PATH配置,把终端里的PATH内容导入进去。首先在终端执行echo $PATH得到你的终端PATH,然后在脚本开头添加:
export PATH="/你的终端PATH内容:$PATH"
比如你的终端PATH是/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin,那脚本开头就写:
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:$PATH"
这样脚本执行时就会使用和终端一致的PATH环境。
方法3:在Xcode的Scheme中配置环境变量
如果不想修改脚本,也可以直接在Xcode里配置进程的环境变量:
- 点击Xcode顶部菜单栏的
Product->Scheme->Edit Scheme - 在弹出的窗口中选择
Run选项卡,切换到Arguments标签页 - 在
Environment Variables区域点击+,添加一个名为PATH的变量,值填入你终端里echo $PATH得到的内容 - 勾选变量前的复选框,确保它会被应用
这样Xcode启动你的Cocoa应用时,进程就会使用你配置的PATH,脚本里的命令就能正常找到了。
内容的提问来源于stack exchange,提问作者Lucas Moskun
相关产品推荐
相关产品推荐

