1

我无法通过奇点运行脚本的输出。

我有一个 python 脚本,在其末尾保存输出:

...
with open('saveOut.pkl','wb') as myFile:
    pickle.dump(myTable,myFile)

我想在一台远程机器上运行这个脚本。由于我正在学习奇异性,因此我在目录中制作了一个“沙盒”debian 映像(尚未编译为单个“img”文件)/tmp/debiantest.py在这张图片中,我复制了 python 脚本/usr/src并使用以下命令运行它:

sudo singularity exec /tmp/debian python3.5 /usr/src/test.py

问题:

只要我只显示结果,它就可以很好地工作。对于上面描述的泡菜示例,我在任何地方都没有得到任何saveOut.pkl文件:这个文件只是没有写在任何地方,但我没有看到任何消息。我试图在 python 脚本中编写一个显式路径。例如/usr/src/saveOut.pkl,但这是一样的。

我怎么能写出结果?

您预期的结果是什么,即您希望在哪个目录中找到输出文件?

我希望在saveOutput.pkl任何地方都有一个文件,无论是否在容器中,我不在乎位置。目前我根本不明白:既不是在容器的当前目录中,也不是在容器的 中/usr/src/,也不是在主机上,也不是在任何地方。

你是在主机上还是在容器里找的?

两个,我在任何地方都看不到

4

1 回答 1

1

这里发生的是您的 python 脚本正在将 pickle 文件写入其当前位置(容器中的 /usr/src/)。然后,由于脚本的输出不是持久的(由于沙箱在执行时不可写),它会在运行结束时被删除。

我相信你可以改变你的脚本:

with open('/opt/saveOut.pkl','wb') as myFile:
    pickle.dump(myTable,myFile)

然后绑定本地目录并获取您要查找的输出:

sudo singularity exec -B ./:/opt /tmp/debian python3.5 /usr/src/test.py  

无论如何,这对我有用。

于 2019-02-22T15:24:15.533 回答