Python popen使用时出现了奇怪的位数问题

6
因此,我使用Python的subprocess.popen调用外部可执行文件(作为R portable的一部分的Rscript.exe)。
  • 从32位Python中调用时,它可以正常工作。

  • 从64位Python中调用时,R会抱怨找不到各种包,因此有些东西是不同的。

不应该有任何文件系统重定向发生(Rscript.exe的路径不在程序文件中)

这可能是一个Python问题,一个R问题,或者两者都有。为什么任何事情都会根据调用popen的进程的位数而表现得不同?我能否从Rscript的角度强制从64位Python进行的调用看起来像从32位调用?


4
请问您能否发布代码和错误信息? - wholevinski
1
这是在Windows上吗?为什么不使用R64? - rll
4
请检查两个Python的调用中的PATH、当前目录和任何库路径。 - mdurant
1
使用Linux时,我遇到了类似的问题。我使用system("sh -c 'unset LD_LIBRARY_PATH;executable'")修复了这个问题。在Windows上,可能是路径设置错误,即加载了错误的DLL文件。 - Jens Munk
更新:问题已解决。这不是位数问题。Popen将环境变量传递给子进程。我在Popen调用中设置了env={},现在它可以工作了。 - Sideshow Bob
@SideshowBob 也许你可以更新一下问题,使其更加通用化,将其作为答案并关闭。现在它看起来像是一个无效的开放性问题... 可以成为一个有用的已回答问题 ;) - MariusSiuram
1个回答

0
当您使用subprocess.Popen类来处理子程序或线程时,它会为其创建一个管道到shell或命令提示符,并且您可以将参数作为字符串传递给subprocess.Popen类的对象。该命令在shell中运行并得到执行。 因此,出现的错误既不是Python问题,也不是R问题。 问题出在您的环境变量和系统路径上。 您可能没有保存R的环境路径,因此无法获取Rscript.exe以进行执行。 而且,没有直接可用于搜索文件夹/文件以进行执行的文件/目录重定向系统。 设置R的系统路径变量,您的问题有望得到解决。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接