为什么我的 xterm 终端无法通过 bash 脚本打开,找不到漂亮的模块?



我有一个使用prettytable的python文件。我还有一个bash脚本,可以使用xQuartz打开并运行它。当我打开xQuartz并从那里运行文件时,它按预期工作,但是当我尝试使用脚本运行它时,它无法找到我的pretytable模块。可能会发生什么?

bash脚本:

xterm -geometry 55x24+000+000 -hold -e /bin/bash -l -c "python3 server.py 1"

在xQuartz终端上运行python3 server.py 1可以。如果我从mac终端运行xterm并执行相同的操作,它也可以工作。

正如@DiegoTorresMilano指出的那样,您可能正在运行不同版本的python 3取决于您的~/.bash_profile~/.bashrc中的内容。如果您安装了多个版本的python 3,这是可能的。

当您运行交互式非登录bash会话时,您的~/.bash_profile将首先被源,然后是您的~/.bashrc。因为你的~/.bashrc将是第二个来源,它可以覆盖在你的~/.bash_profile中设置的东西。

当您使用-l选项运行bash时,这将告诉bash像登录shell一样运行。然后是"调用"。bash手册页的一部分告诉我们~/.bash_profile将由登录shell提供,但是而不是~/.bashrc.

你应该尝试在交互式xQuartz终端中运行python3 --version。这将为您提供类似Python x.y.z的输出(例如,Python 3.8.5)。然后,您可以通过在bash脚本中使用pythonx.y来运行特定的python版本(例如,如果python3 --version的输出是Python 3.8.5,那么您应该在bash脚本中使用python3.8)。

最新更新