You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在venv中通过Bash运行Python脚本时出现意外故障

问题分析与分步解决方案

咱们先拆解你遇到的核心问题,一步步来解决:

1. 虚拟环境Python版本混乱是根源

从你贴的终端输出能看到:激活mai_trading虚拟环境后,python还是指向Python2.7,只有python3才是你需要的3.6.9版本。但你的脚本里用的是/home/reallymemorable/Documents/environments/trading/bin/python3——这个路径和你激活的mai_trading环境不匹配!这会导致你调用的Python环境没装对依赖(比如pandas),或者根本不是你想要的虚拟环境。

修复步骤:

  • 先确认虚拟环境的正确Python路径:激活mai_trading后执行which python3,得到的路径应该是/home/reallymemorable/Documents/environments/mai_trading/bin/python3,把脚本里所有的Python路径都替换成这个正确地址。
  • 更省心的方式:在脚本开头先激活虚拟环境,后续直接用python3命令(激活后它会指向虚拟环境的版本):
    #!/bin/bash
    source /home/reallymemorable/Documents/environments/mai_trading/bin/activate
    # 后续命令直接用python3
    python3 1-ccxt_2.py -e bittrex -s BTC/USDT
    sleep 1
    # ... 其他拉取命令同理替换
    

2. glob不需要pip安装!

你尝试pip3 install glob报错404,是因为glob是Python自带的标准库,根本不需要通过pip安装。直接在代码里import glob就能用,这个错误完全是误解了库的来源。

3. dateConvert.py没生成文件的排查与修复

concatCrypto.py报reduce() of empty sequence,本质是因为它找不到任何*dateFormatted.csv文件——说明dateConvert.py根本没正确生成这些文件。

手动排查步骤:

  1. 用虚拟环境的Python手动运行dateConvert.py:
    source /home/reallymemorable/Documents/environments/mai_trading/bin/activate
    python3 /home/reallymemorable/Documents/scripts/Crypto/dateConvert.py
    
    看终端有没有输出文件名,如果没有,说明glob.glob(path)没匹配到任何*1d.csv文件。
  2. 检查dateConvert.py里的路径:path = "/home/reallymemorable/Documents/scripts/Crypto/*1d.csv",确认这个目录下确实有前5个脚本拉取的*1d.csv文件。
  3. 确认虚拟环境里装了pandas:激活环境后执行pip3 list,如果没有pandas,就装它:pip3 install pandas。
  4. 确保dateConvert.py生成的文件路径和concatCrypto.py的匹配:dateConvert.py是在原文件目录生成*-dateFormatted.csv,concatCrypto.py的glob路径要和这个完全一致。

4. 脚本执行权限与工作目录问题

  • 给两个Python脚本加执行权限:
    chmod +x /home/reallymemorable/Documents/scripts/Crypto/dateConvert.py /home/reallymemorable/Documents/scripts/Crypto/concatCrypto.py
    
  • 注意脚本的工作目录:你的Bash脚本里的mv -- *.csv是在当前执行目录操作的,要确保所有Python脚本生成的csv文件都在这个目录,或者在Python脚本里用绝对路径生成文件,避免路径混乱。

优化建议:简化脚本路径

把重复的路径定义成变量,让脚本更易维护:

#!/bin/bash
VENV_PYTHON="/home/reallymemorable/Documents/environments/mai_trading/bin/python3"
SCRIPT_DIR="/home/reallymemorable/Documents/scripts/Crypto"

$VENV_PYTHON $SCRIPT_DIR/1-ccxt_2.py -e bittrex -s BTC/USDT
sleep 1
# ... 其他拉取命令同理替换
$VENV_PYTHON $SCRIPT_DIR/2-dateConvert.py
sleep 3
$VENV_PYTHON $SCRIPT_DIR/3-concatCrypto.py
# ... 后续命令

内容的提问来源于stack exchange,提问作者reallymemorable

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 07:37:28