我有一个主项目在C:/myproject/harry.py
在哈里。皮耶正在启动线程。在
在哈里。皮耶正在使用已建立的路径每隔几秒钟保存和加载文本文档self.relativePath = os.path.dirname(sys.argv[0])
在每个线程中,调用一个子进程来激活C:/myproject/betty/here.exe
中的命令行.exe文件
我尝试了各种方法来实现这一点,比如:
my_env = os.environ
my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]
doit = subprocess.Popen('cd betty/', 'here.exe -command', env=my_env)
doit.wait()
或者
^{pr2}$回应:
FileNotFoundError: [WinError 2] The system cannot find the file specified
是否可以使用自定义路径在子文件夹中运行子进程。。。这不会干扰已经建立的路径self.relativePath
谢谢
你很接近:
如果您的命令被调用
here.exe -command
,这实际上是可以工作的,但是当然,没有这样的文件存在。你想要['here.exe', '-command']
(或者更不安全、效率更低的添加shell=True
;但实际上,不需要)。在似乎您在这次尝试中也忘记了传入}?如果是这样的话,为每个新的子流程重复创建一个新副本似乎有点浪费。在
env=my_env
;但是here.exe
真的需要您修改{您还需要切换到
subprocess.run()
或一个旧的包装器;实际上应该只从库函数直接使用低级的Popen()
函数。在另一方面,
^{pr2}$here.exe
真的需要在一个特定的目录中运行吗,PATH
上是否存在该目录?Windows有点奇怪,Windows程序员通常不知道基本的命令行可用性设计原则;但是如果here.exe
写得很正确,那么您可能实际上在寻找我发现了答案的一些帮助,从不同的stackoverflow的帖子,以及跌跌撞撞地通过可能的解决方案。这并不容易!在
一定要包括双斜杠,以匹配操作系统路径目录名(系统argv[0])
^{pr2}$相关问题 更多 >
编程相关推荐