我有一个使用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
)。