Неожиданный сбой при запуске python скриптов через bash внутри venv - PullRequest
0 голосов
/ 19 июня 2020

У меня есть этот bash скрипт:

#!/bin/bash
/home/reallymemorable/Documents/environments/trading/bin/python3 1-ccxt_2.py -e bittrex -s BTC/USDT
sleep 1
/home/reallymemorable/Documents/environments/trading/bin/python3 1-ccxt_2.py -e bittrex -s ETH/USDT
sleep 1
/home/reallymemorable/Documents/environments/trading/bin/python3 1-ccxt_2.py -e bittrex -s XRP/USDT
sleep 1
/home/reallymemorable/Documents/environments/trading/bin/python3 1-ccxt_2.py -e bittrex -s LTC/USDT
sleep 1
/home/reallymemorable/Documents/environments/trading/bin/python3 1-ccxt_2.py -e bittrex -s BCH/USDT

sleep 3
/home/reallymemorable/Documents/environments/trading/bin/python3 2-dateConvert.py
sleep 3
/home/reallymemorable/Documents/environments/trading/bin/python3 3-concatCrypto.py
sleep 3
/home/reallymemorable/Documents/environments/trading/bin/python3 4-cutDates_1year.py "$(date +%Y-%m-%d -d "1 year ago")" "$(date +'%Y-%m-%d')" < DailyCryptoPricesFull.csv
sleep 3
/home/reallymemorable/Documents/environments/trading/bin/python3 4-cutDates_3months.py "$(date +%Y-%m-%d -d "3 months ago")" "$(date +'%Y-%m-%d')" < DailyCryptoPricesFull.csv

sleep 1
mkdir $(date +"%Y-%m-%d")
sleep 1
mv -- *.csv "$(date +'%Y-%m-%d')"

Он извлекает 5 различных криптографических временных рядов, преобразует формат даты в скрипте dateConvert.py, объединяет все 5 криптографических данных в скрипте concatCrypto.py , затем производит 2 версии вывода за 1 год и 3 месяца назад. Затем он создает каталог с текущей датой в качестве имени и перемещает в него все файлы.

Все работало отлично, но потом я понял, что мне нужно делать все это внутри venv. Я создал venv и изменил свои python вызовы (как вы можете видеть выше), чтобы использовать venv.

Но теперь происходит то, что первый набор команд выполняется правильно (5 данных извлекаются), но остальные сценарии python не выполняются вообще. (Команды mkdir и mv выполняются правильно.)

Я получаю следующую ошибку:

Traceback (most recent call last):
  File "3-concatCrypto.py", line 33, in <module>
    df_merged = reduce(lambda  left,right: pd.merge(left,right,on=['Timestamp'], how='outer'), data_frames).fillna('NULL')
TypeError: reduce() of empty sequence with no initial value
getCrypto.sh: 33: getCrypto.sh: cannot open DailyCryptoPricesFull.csv: No such file
getCrypto.sh: 37: getCrypto.sh: cannot open DailyCryptoPricesFull.csv: No such file

Это означает, что он начал сбой в файле concatCrypto.py , но я знаю, что до этого скрипт не работает (правда, пропускает), потому что даты не конвертируются. не уверен.

Вот содержимое dateConvert.py:

import csv
import datetime
import time
import pandas as pd
import glob

path = "/home/reallymemorable/Documents/scripts/Crypto/*1d.csv"
for fname in glob.glob(path):
    print(fname)
    # Step 1: Convert the dates
    df = pd.read_csv(fname)
    df['Timestamp'] = pd.to_datetime(df['Timestamp'], unit='ms')
    # print(df.head())
    # nameWithDate = str(str(datetime.date.today()) + fname)
    df.to_csv(fname + '-dateFormatted.csv', index=False)

И concatCrypto.py:

import csv
import datetime
import time
import pandas as pd
import glob
from functools import reduce
import os
from datetime import date


data_frames = []

for fname in glob.glob("/home/reallymemorable/Documents/scripts/Crypto/*dateFormatted.csv"):
   data_frames.append(pd.read_table(fname, sep=','))

df_merged = reduce(lambda  left,right: pd.merge(left,right,on=['Timestamp'], how='outer'), data_frames).fillna('NULL')
print(df_merged)
df_sorted = df_merged.sort_values(by='Timestamp')
print(df_sorted)
# df_oneYear = df_sorted[df_sorted['Timestamp'] == '2019-06-11']
# print(df_oneYear)
df_sorted.to_csv('DailyCryptoPricesFull.csv', index=False)

EDIT:

ошибка в том, что glob не работает в dateConvert.py.

Я пытался установить его вручную, но получаю эту ошибку:

reallymemorable@gort:~/Documents/environments$ python3 --version
Python 3.6.9
reallymemorable@gort:~/Documents/environments$ python --version
Python 2.7.17
reallymemorable@gort:~/Documents/environments$ source mai_trading/bin/activate
(mai_trading) reallymemorable@gort:~/Documents/environments$ python --version
Python 2.7.17
(mai_trading) reallymemorable@gort:~/Documents/environments$ python3 --version
Python 3.6.9
(mai_trading) reallymemorable@gort:~/Documents/environments$ pip3 install glob
Collecting glob
Exception:
Traceback (most recent call last):
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/basecommand.py", line 215, in main
    status = self.run(options, args)
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/commands/install.py", line 353, in run
    wb.build(autobuilding=True)
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/wheel.py", line 749, in build
    self.requirement_set.prepare_files(self.finder)
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/req/req_set.py", line 380, in prepare_files
    ignore_dependencies=self.ignore_dependencies))
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/req/req_set.py", line 554, in _prepare_file
    require_hashes
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/req/req_install.py", line 278, in populate_link
    self.link = finder.find_requirement(self, upgrade)
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/index.py", line 465, in find_requirement
    all_candidates = self.find_all_candidates(req.name)
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/index.py", line 423, in find_all_candidates
    for page in self._get_pages(url_locations, project_name):
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/index.py", line 568, in _get_pages
    page = self._get_page(location)
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/index.py", line 683, in _get_page
    return HTMLPage.get_page(link, session=self.session)
  File "/home/reallymemorable/Documents/environments/trading/lib/python3.6/site-packages/pip/index.py", line 795, in get_page
    resp.raise_for_status()
  File "/home/reallymemorable/Documents/environments/trading/share/python-wheels/requests-2.18.4-py2.py3-none-any.whl/requests/models.py", line 935, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found for url: https://pypi.org/simple/glob/

1 Ответ

0 голосов
/ 19 июня 2020

РЕДАКТИРОВАТЬ: facepalm Я изменил имя каталога и жестко закодировал пути в вызовах glob.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...