Я думаю, что рекомендуемый метод - это, конечно, попытаться упаковать ваш код как правильный модуль и установить его заранее с помощью pip, либо на уровне пользователя / системы, либо в среде стиля pythonenv. Это, конечно, может быть очень сложным и трудоемким в зависимости от того, сколько кода вам нужно изменить, чтобы приспособиться к этому, и рекомендуется попытаться сделать это в начале создания проекта, чтобы избежать этой головной боли.
Однако, если не считать выполнения нетривиального объема работы, я действительно столкнулся с этой конкретной c ошибкой, которая возникает у вас в Amazon EC2 LTS ubuntu. Понятия не имею, что вызывает это, но его вроде python просто обходят стороной обычные настройки среды и не работают так, как вы ожидаете. В моем случае я просто использовал грязное исправление:
import os
os.environ['PYTHONPATH'] = '{}:{}'.format('my/addition/to/pythonpath', os.environ.get('PYTHONPATH', ''))
print(os.environ['PYTHONPATH'])
# prints my/addition/to/pythonpath:existing/things/on/pythonpath
, поэтому для вашего варианта использования попробуйте:
import os
os.environ['PYTHONPATH'] = '{}:{}'.format('/home/ec2-user/efs/Day-Trader/day_trader/', os.environ.get('PYTHONPATH', ''))
print(os.environ['PYTHONPATH'])
# prints /home/ec2-user/efs/Day-Trader/day_trader/:
, вы, конечно, можете делать с этим довольно неприятные вещи, например:
python -c "import os; os.environ['PYTHONPATH'] = '/my/addition/to/pythonpath'; import mymodule; mymodule.doThing()'
, если по какой-то причине вам не нравятся все, кому не нравится работать с этим. Шутки в сторону, я действительно использовал такие вещи в продакшене, и если вы поймете, что, черт возьми, вызывает эти проблемы с env, мне было бы интересно узнать, даже если я больше не работаю на машинах, на которых были эти проблемы.