python - 如何创建一个通用的 bash shell 来运行 PATH 中的任何 python?
问题描述
由于复杂的公司设置和我在 CI 管道和目标部署中使用的 venv,我需要我的 venv bin 中的 python 来运行 PATH 中的任何 python。我执行以下操作,但似乎以无限循环结束:
这是我的 $DEPLOYMENT_VENV/bin/python 的内容
#!bin/bash
python $@
默认使用的实际 python 是之前在 PATH 中设置的。
为什么这会导致无限循环或永远挂起?
解决方案
如果python
bash 找到的结果与$DEPLOYMENT_VENV/bin/python
.
可能有几个原因:PATH
终端中的变量值与执行脚本的环境中的值不同,等等。
要解决此问题,您应该修改临时$DEPLOYMENT_VENV/bin/python
文件,以便添加 2 行以在临时文件中生成额外的调试日志消息/tmp/dbg-python.txt
:
#!/bin/bash
printf "DBG: " >>/tmp/dbg-python.txt 2>&1
type python >>/tmp/dbg-python.txt 2>&1
printf "\nDBG: PATH=%s\n" "${PATH}" >>/tmp/dbg-python.txt 2>&1
# python $@
再次测试。
文件的内容是什么/tmp/dbg-python.txt
?
推荐阅读
- ios - 在 contentView 中包含列表
- windows - 在 Windows 终端上更改 carret 的形状
- syntax - 在将 JSON 转换为 CSV 时在 jq 中使用 JSONpath 语法的问题
- android-studio - Android 应用程序编译警告“运行时 JAR 文件的版本 1.4 比 API 版本 1.5 所需的版本旧”
- c++ - 如何始终在具有实时数据的 ofstream 文件中包含 N 行
- python - 通过和/或将文本拆分为句子
- c# - 如何将谓词作为参数传递到 ASP.NET MVC 中的 IActionResult
- git - 本地合并分支无法解决 github 上的拉取请求
- apache-spark - Spark Streaming 批处理持续时间
- mysql - Mysql2::Error: Data too long for column 'object' at row 1 尝试使用 Active Record 更新时出错