从另一个位置运行Tensorflow脚本

时间:2018-08-03 13:22:37

标签: python python-3.x tensorflow image-processing runtime-error

我已经创建了Tensorflow图像分类器,应该使用另一个python脚本调用图像分类器。

我尝试了 os.system(),但是我不能只调用Tensorflow脚本,因为这取决于Tensorflow脚本位置中的多个文件。所以我必须在主脚本(第二个python脚本)中包含所有带有分类脚本的文件。

最好的方法是什么?

  

脚本运行时:

enter image description here

  从另一个位置运行时

脚本错误:

enter image description here

2 个答案:

答案 0 :(得分:0)

您是否尝试过Python Subprocess而不是 os.system

How do you use subprocess.check_output() in Python?中,您可以看到这个简单的演示:

py2.py:

import sys
print sys.argv

py3.py:

import subprocess
py2output = subprocess.check_output(['python', 'py2.py', '-i', 'test.txt'])
print('py2 said:', py2output)

运行它:

$ python3 py3.py
py2 said: b"['py2.py', '-i', 'test.txt']\n"

更新:

我认为您的问题是在运行python脚本之前需要指定/设置正确的文件夹路径。例如:

请考虑以下文件夹结构:

/root/project/script.py
/root/project/data/file.txt

如果在python脚本中使用相对路径(如 ./ data / file.txt )加载文件,则需要在 project 文件夹中运行脚本。 如果在 root 文件夹中运行它,如下所示:

/root$ python project/script.py

该脚本失败,因为它试图在 root 文件夹中找到 data / file.txt 。 您可以在运行python脚本之前使用 cd 命令更改当前目录。您可以在调用 os.system 时执行此操作,如下所示:

os.system("cd project && python script.py") # for my example case

答案 1 :(得分:0)

无论您从哪里调用python脚本,脚本中的所有相对路径都将基于该路径。也就是说,您从第一张图片中的项目文件夹中调用了脚本,因此指向project_folder/tf_files/...的链接有效,而您后来又从其他位置调用了该脚本,因此符号链接被弄乱了。您的脚本试图找到elsewhere/tf_files/...,但该子文件夹不存在。

您可以编辑脚本,以便始终取消所有路径(从/home/...开始),然后就不会混淆