- 有没有办法将 virtualenvwrapper 与 venv 一起使用?
是的。只需指向WORKON_HOME
您的 venvs 目录。这是我在我的. 中所做的~/.zshrc
,我混合使用了 virtualenv(现在很少见,只是为了满足一些遗留的 py2 需求)和 venv(最常见)。我将默认值重命名为 .venvs 以明确这些主要是 Python 3 venvs 而不是 virtualenvs。
# Python Environment Handling
export WORKON_HOME=$HOME/.venvs # Default name changed from virtualenv to highlight I am using python3 -m venv (aka pyvenv)
export PROJECT_HOME=$HOME/dev
source /usr/local/bin/virtualenvwrapper.sh # symlinked to /Library/Frameworks/Python.framework/Versions/3.7/bin/virtualenvwrapper.sh
- 或者甚至可以考虑由于 venv 而不需要 virtualenvwrapper?(我看不出这是怎么回事,因为它是解决另一个问题的包装器)
venv == virtualenv(简而言之)。venv 不会取代 virtualenvwrapper,原因与 virtualenv 取代它的原因相同。你对此的预感是正确的。
- 这比仅仅创建一个来源激活的别名更好吗?
好吧,由你决定你需要什么,但我发现带有 zsh 插件 virtualenv 和 virtualenvwrapper 的 virtualenvwrapper 非常好,并且比原始别名更好。
workon
列出所有 venvs 非常好,然后workon speech_analyzer
直接进入它。
- 其他解决方案?
您还可以设置挂钩以在目录更改时激活 venvs,但如果这就是您所追求的并且仅此而已,那么这本质上就是 pipenv。如果这就是你想要做的,那么 Pipenv 很棒。Pipenv 也有一个有趣且有前途的锁文件功能,但它对于开发来说太慢了,而且对于生产中的问题也太不成熟,目前无法评论。
但我从不喜欢每个项目工作流程的 1:1 环境,原因与此处给出的相同:https ://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-delivers-very-little /。特别是这些需求与我的多项目单一环境一致:https ://chriswarrick.com/blog/2018/07/17/pipenv-promises-a-lot-delivers-very-little/#nikola
我的机器上有六个环境和大约 20 个项目。Pipenv 没有扩展到那种情况。Pipenv 坚持为 20 个项目提供 20 个环境。它只是不起作用,并且产生的问题多于它解决的问题。如果您目前确实有 1:1 的工作流程,那么 pipenv 可能是您想要的工具。需要注意的是,不幸的是,您只能在 pipenv 中执行该工作流程。