【问题标题】:Modifying PYTHONPATH using .env files with Pipenv使用带有 Pipenv 的 .env 文件修改 PYTHONPATH
【发布时间】:2019-05-26 09:52:25
【问题描述】:

我正在尝试使用pipenv 将项目目录添加到PYTHONPATH。根据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(可能没关系)。

【问题讨论】:

    标签: python environment-variables pythonpath pipenv


    【解决方案1】:

    你的 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 测试。

    【讨论】:

      猜你喜欢
      • 2019-11-20
      • 2019-05-19
      • 2019-12-30
      • 2020-09-22
      • 2012-07-27
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多