【问题标题】:How can I run a Python pipenv from another directory?如何从另一个目录运行 Python pipenv?
【发布时间】:2018-11-06 18:40:07
【问题描述】:

我有一个项目,现在我想使用 pipenv。

我想从我的主 bin 目录中对它进行符号链接,因此我可以从另一个目录(它与本地文件交互的地方)运行它,但仍然可以在具有适当安装的文件的 pipenv 中运行它。

我可以做类似的事情

pipenv run python /PATH/TO/MY/CODE/foo.py localfile.conf

或者这不会选择 /PATH/TO/MY/CODE/Pipev 中定义的 pipenv 吗?

【问题讨论】:

标签: python pipenv


【解决方案1】:

不确定这是否与您在 2018 年使用的 pipenv 版本相关,但从当前版本开始,您可以使用 PIPENV_PIPFILE 环境变量。您最终会得到一个类似于以下内容的包装器 shell 脚本:

export PIPENV_PIPFILE=/my/project/dir/Pipfile
exec pipenv run command ...

(虽然迟了半年还是回答,因为这是第一个相关的搜索结果,所以我下次可以再找到它。)

【讨论】:

  • 为什么需要exec?我在没有exec 的情况下尝试过,效果很好。
  • 不应该像PIPENV_PIPFILE=/my/project/dir/Pipfile pipenv run command那样工作吗?
【解决方案2】:

pipenv 是 virtualenv 的包装器,它将 virtualenv 文件保存在主目录的某个文件夹中。我在/home/MYUSERNAME/.local/share/virtualenvs 中找到了它们。

所以我写了small_script.sh

#!/bin/bash
source /home/MYUSERNAME/.local/share/virtualenvs/MYCODE-9as8Da87/bin/activate
python /PATH/TO/MY/CODE/foo.py localfile.conf
deactivate

它会为自己激活 virtualenv,然后在本地目录中运行你的 python 代码,最后停用 virtualenv。

您可以将localfile.conf 替换为$@,这样您就可以运行./small_script.sh localfile.conf

【讨论】:

  • 这样做的一个缺点是pipenv 具有的任何额外行为,例如automatically loading .env files,不会执行。如果您只需要具有正确依赖项的正确 Python 解释器,它就可以正常工作。
猜你喜欢
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 2014-01-06
  • 2014-05-06
  • 1970-01-01
  • 2011-06-17
  • 2012-12-15
  • 2011-09-22
相关资源
最近更新 更多