如何使用pipenv共享虚拟环境?

3

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

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

以下方法对我有些起作用。希望它能帮到你。

2个回答

3

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

(您仍需要保持PipfilePipfile.lock同步。像@MalikKoné建议的那样将它们设置为符号链接可能有效,但如果Pipfile在版本控制下,则不行,因为这是它们应该具备的特性。)

然而,这更适合您已经有一组要重用的环境的情况。否则,在任意位置放置环境很容易会导致混乱。


1

如何使用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/ 文件夹。删除该文件夹,并将其替换为指向 bob-signature 的链接。
cd ~/.local/share/virtualenvs/
rm -r alice-signature/
ln -s bob-signature/ alice-signature

~/baz/alice/中,将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,并且从这些目录安装的软件包将被共享。

如果Pipfile文件受版本控制(应该是这样的),则符号链接无法使用。 - ivan_pozdeev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接