我正在尝试使用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测试。

10-01 06:48
查看更多