Изменение PYTHONPATH с использованием файлов .env с помощью Pipenv - PullRequest
0 голосов
/ 28 декабря 2018

Я пытаюсь добавить каталог проекта в PYTHONPATH, используя pipenv.Следуя подсказке этого поста , я создал файл .env, чтобы изменить путь, используемый virtualenv, управляемым pipenv.

, который я создалфайл .env/foo/bar/myProject) выглядит следующим образом:

PYTHONPATH=${PYTHONPATH}:${PWD}

, но когда я активирую virtualenv, это новый путь:

$ python -c "import sys; print(sys.path)"
['', '/foo/bar/${PYTHONPATH}', '/foo/bar/${PWD}', '/foo/bar/myProject',...]

Он правильно добавляет /foo/bar/myProject до PYTHONPATH.Однако, похоже, он добавляет также две дополнительные записи с незамещенными переменными среды.

Почему это происходит и как этого избежать?

Примечание: я использую оболочку Z (возможно, этоне имеет значения).

1 Ответ

0 голосов
/ 11 августа 2019

Возможно, в вашей оболочке не установлено envariable $PYTHONPATH, поэтому pipenv тупо заменяет ${PYTHONPATH} значением в файле .env (т.е. ${PYTHONPATH}:${PWD}).Затем ${PWD} успешно расширяется, давая вам окончательное значение PYTHONPATH=${PYTHONPATH}:${PWD}:/foo/bar/myProject.Это приводит к странному виду sys.path.Вы можете решить эту проблему, пропустив ${PYTHONPATH} в значении:

PYTHONPATH=${PWD}

или установите для него какое-либо значение перед запуском pipenv:

export PYTHONPATH=/path/to/dir
pipenv shell

Протестировано с версией pipenv2018.11.26.

...