如何使用Pipenv共享虚拟环境?跨非子目录的共享方法咨询
如何在非子文件夹路径间共享Pipenv虚拟环境?
Pipenv默认的机制是,只要你在某个目录(比如~/foo/)创建了虚拟环境,它的所有子文件夹(比如~/foo/baz/)都能自动识别并使用这个环境——因为Pipenv会自动向上查找Pipfile和锁文件。但如果要在完全不相关的路径(比如~/foo/bob/和~/baz/alice/)之间共享同一个虚拟环境,就得手动做些配置了。我自己试过下面的方法,亲测有效,分享给你:
步骤1:找到要共享的虚拟环境路径
首先在你已经创建好虚拟环境的原目录(比如~/foo/)里,运行这条命令获取虚拟环境的实际路径:
pipenv --venv
它会输出类似~/.local/share/virtualenvs/foo-abc123这样的路径,把这个路径记下来,后面配置要用到。
步骤2:在目标目录关联虚拟环境
接下来,在每个需要共享这个环境的目标目录(比如~/foo/bob/和~/baz/alice/)里,做以下配置:
配置Pipfile
如果目标目录还没有Pipfile,可以直接从原环境目录复制一份过来;如果已经有了,就打开它,在[requires]块里添加指定虚拟环境的行:
[requires] python_version = "3.9" # 替换成你实际使用的Python版本 virtualenv = "~/.local/share/virtualenvs/foo-abc123" # 替换成步骤1拿到的路径
配置.env文件(可选但推荐)
在目标目录里创建或修改.env文件,添加这两行:
PIPENV_VENV_IN_PROJECT=0 PIPENV_VIRTUALENV=~/.local/share/virtualenvs/foo-abc123
这样每次在这个目录运行Pipenv命令时,都会自动关联到指定的虚拟环境,不用每次手动指定。
步骤3:验证配置是否生效
在目标目录里运行:
pipenv shell
如果成功进入虚拟环境,再运行pip list查看已安装的包,和原环境完全一致的话,就说明配置成功了。
小提示
- 记得所有需要共享环境的目录都要做相同的配置,避免Pipenv自动创建新的虚拟环境。
- 如果原虚拟环境的路径发生变化(比如重新创建了环境),要同步更新所有关联目录的配置哦。
内容的提问来源于stack exchange,提问作者Malik Koné
相关产品推荐
相关产品推荐

