在我的本地机器上,我运行一个包含这一行的python脚本
bashCommand = "cwm --rdf test.rdf --ntriples > test.nt"
os.system(bashCommand)
Run Code Online (Sandbox Code Playgroud)
这很好用.
然后我在服务器上运行相同的代码,我收到以下错误消息
'import site' failed; use -v for traceback
Traceback (most recent call last):
File "/usr/bin/cwm", line 48, in <module>
from swap import diag
ImportError: No module named swap
Run Code Online (Sandbox Code Playgroud)
所以我所做的就是插入一个"print bashCommand",它在使用os.system()运行它之前打印我,而不是终端中的命令.
当然,我再次得到错误(由os.system(bashCommand)引起)但在该错误之前它在终端中打印命令.然后我只是复制了那个输出并在终端上做了一个复制粘贴,然后点击回车就可以了......
有没有人知道发生了什么?
我有一个主要用 Python 编写的软件,现在,我使用PyInstaller以用户友好的方式捆绑和分发软件(它是我的 CI 管道的一部分,适用于 Linux 和 Windows)。
但是,我的表现很糟糕,我想用 Julia 重写一些重要的部分,同时将前端保留在 Python 中。我可以使用PyJulia来做到这一点,但这意味着用户必须手动安装 Julia 才能使用我的程序。
朱莉娅确实有PyInstaller相当于,这是PackageCompiler.jl,但我不知道该怎么称呼的东西与PackageCompiler.jl从Python方编制。
我怎样才能做到这一点,以便我可以捆绑和分发具有 Python、Julia 及其运行所需的一切的可执行文件?
我的最终用户是不知道什么是编程的人(化学家和药剂师)。他们没有 Python、Julia 或 Docker(他们甚至不想安装它)。
在我目前的方法中,与 PyInstaller 捆绑的软件由一个可执行文件组成,其中包含所有内容(Python 及其所需的一切)。我真正想要的是保持相同的用户体验,而且还有 Julia 在后台运行。
我将在 Julia 端实现几个函数,并且我想要(几乎)与 PyJulia 相同级别的集成。
也许我会去 Rust 并只使用 C 接口,但我真的很想使用 Julia。
谢谢你们的时间。
我有一个通过控制台运行的服务器程序.(具体来说,Bukkit MineCraft服务器)我希望能够控制这个程序并读取输出.没有GUI,所以它不应该太难,对吧?
无论如何,我从来没有在python中控制一个控制台而且完全卡住了.有什么建议?
PS我正在使用Debian Linux,因此应该简化一些事情.
我得到了一个很好的答案,但我还需要一件事.我想有一些方法将程序的FULL输出打印到python控制台(逐行排序很好),我需要一些方法将控制台中的命令转发到程序.
最好在 mac 上,您需要导入哪些模块,或者只需要编写哪些模块来运行一些简单的操作,例如:打开终端并使用 mac 终端上的 screencapture 命令每分钟捕获屏幕图像的 python 脚本?
我正在运行这样的SSH进程:
sshproc = subprocess.Popen([command], shell=True)
exit = os.waitpid(sshproc.pid, 0)[1]
Run Code Online (Sandbox Code Playgroud)
这可以工作并打开一个交互式终端.根据文档subprocess,sshproc使用脚本sys.stdin.
问题是:如何向stderr或文件打印正在接收此子进程的输入?我正在创建一个日志API,并且目前无法记录在此SSH会话上运行的命令.
我不需要答案,只需要朝着正确的方向轻推.
感谢大家!
编辑:重要的是我启动如上所示的过程,以便我可以与我的用户进行交互式SSH会话.例如communicate(),据我所知,我无法使用.
python ×5
terminal ×2
bash ×1
command ×1
julia ×1
macos ×1
pyinstaller ×1
stdin ×1
subprocess ×1