如何与 pipenv 共享虚拟环境?

How to share a virtual environment with pipenv?

Pipenv 虚拟环境 (venv) 将与子文件夹共享。 因此,例如,如果您在 ~/foo/ 中安装了 venv,则可以在 ~/foo/baz/

中访问它

但是如果您想在 ~/foo/bob/~/baz/alice/ 之间共享相同的 venv 怎么办?

以下对我有用。希望对你有帮助。

与 pipenv 共享虚拟环境 创建目录~/foo/bob/

mkdir -p ~/foo/bob/ ; cd ~/foo/bob/        

在 ~/foo/bob/

中创建一个虚拟环境
pipenv --three

这将创建 ~/.local/share/virtualenvs/bob-signature/

安装你需要的任何包。例如

pipenv install jupyter

这将在 ~/foo/bob/

中创建一个 Pipfile.lock

创建另一个目录,比如 ~/baz/alice/ 并在那里创建一个 venv

mkdir -p ~/baz/alice ; cd ~/baz/alice/ ;  pipenv --three 

和以前一样,pipenv 将在 ~/.local/share/virtualenvs/ 中创建 alice-signature/。 删除该文件夹并将其替换为 link 到 bob-signature

cd ~/.local/share/virtualenvs/
rm -r alice-signature/
ln -s bob-signature/ alice-signature

In ~/baz/alice/, link PipfilePipfile.lock~/baz/bob/

cd ~/baz/alice/ ;
rm Pipfile ; rm Pipfile.lock
ln -s ~/foo/bob/Pipfile . ;  ln -s ~/foo/bob/Pipfile.lock  .  

现在,您应该可以从 alice/bob/ 访问 venv,从任何这些目录安装的软件包将被共享。

pipenv 中有一个未记录的功能:如果您在项目根目录中创建一个名为 .venv 的文件并带有 virtualenv 的路径,pipenv 将使用该文件而不是自动生成的路径。

(您仍然需要保持 PipfilePipfile.lock 同步。按照@MalikKoné 的建议使它们成为符号链接,但如果 Pipfile 不在他们应该的版本控制。)

然而,这 。否则,将环境放置在任意位置最终很容易造成混乱。