我正在尝试使用PYTHONPATH
将项目目录添加到pipenv
。按照this post的提示,我创建了一个.env
文件,以修改pipenv
管理的virtualenv使用的路径。
我创建了.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 shell(可能没关系)。
最佳答案
您的外壳中可能没有设置$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
已使用
pipenv
版本2018.11.26测试。