python - 为什么通过 bash 脚本打开的 xterm 终端找不到漂亮的模块?
问题描述
我有一个使用漂亮表的 python 文件。我还有一个 bash 脚本,可以使用 xQuartz 打开并运行它。当我打开 xQuartz 并从那里运行文件时,它按预期工作,但是当我尝试使用脚本运行它时,它无法找到我的漂亮模块。可能会发生什么?
bash 脚本行:
xterm -geometry 55x24+000+000 -hold -e /bin/bash -l -c "python3 server.py 1"
python3 server.py 1
在 xQuartz 终端上运行很好。如果我xterm
从 mac 终端运行并执行相同操作,它也可以工作。
解决方案
正如@DiegoTorresMilano 所指出的,您可能正在运行不同版本的python 3,具体取决于您的~/.bash_profile
或~/.bashrc
. 如果您安装了多个版本的 python 3,这是可能的。
当您运行交互式非登录 bash 会话时,您~/.bash_profile
将首先获得来源,然后是您的~/.bashrc
. 由于您~/.bashrc
将获得第二个来源,因此它可以覆盖您在~/.bash_profile
.
当您使用该-l
选项运行 bash 时,这会告诉 bash 像登录 shell 一样运行。然后bash 手册页的“调用”部分告诉我们,~/.bash_profile
它将由登录 shell 获取,但不是 ~/.bashrc
.
您应该尝试python3 --version
在交互式 xQuartz 终端中运行。这将为您提供类似的输出Python x.y.z
(例如,Python 3.8.5
)。然后,您可以通过pythonx.y
在 bash 脚本中使用来运行该特定的 python 版本(例如,如果您的输出python3 --version
was Python 3.8.5
,您应该python3.8
在 bash 脚本中使用)。
推荐阅读
- algorithm - 选择最好的记录
- docker - Docker 群服务创建
- php - 如何同时提交模态的值和模态之外的值?
- spring - 如何拦截对休息控制器的未授权请求(方法级授权) - Spring Boot
- firebase - 如何向地图列表中的每个地图添加元素?
- c# - 反序列化 OData 响应
- react-native - pod install 给出与 ruby gems 和 libffi 相关的错误
- javascript - javascript没有在模态弹出窗口中触发-PHP
- sql - 如何在 Db2 中使用名为 Id(主键)的额外列创建视图?
- http - 为什么为同源请求发送源头?