在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根本没正确生成这些文件。
手动排查步骤:
- 用虚拟环境的Python手动运行dateConvert.py:
看终端有没有输出文件名,如果没有,说明source /home/reallymemorable/Documents/environments/mai_trading/bin/activate python3 /home/reallymemorable/Documents/scripts/Crypto/dateConvert.pyglob.glob(path)没匹配到任何*1d.csv文件。 - 检查dateConvert.py里的路径:
path = "/home/reallymemorable/Documents/scripts/Crypto/*1d.csv",确认这个目录下确实有前5个脚本拉取的*1d.csv文件。 - 确认虚拟环境里装了pandas:激活环境后执行
pip3 list,如果没有pandas,就装它:pip3 install pandas。 - 确保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
相关产品推荐
相关产品推荐

