3

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

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

以下类型对我有用。我希望它可以帮助。

4

2 回答 2

3

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

(您仍然需要保持Pipfile's 和Pipfile.locks 同步。按照@MalikKoné 的建议使它们成为符号链接可能会这样做,但如果Pipfiles 像他们应该的那样受版本控制,则不会。)

但是,这更适合您已经拥有一组希望重用的既定环境的情况。否则,将环境放置在任意位置最终很容易造成混乱。

于 2019-07-06T02:19:53.800 回答
1

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

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

在 ~/foo/bob/ 中创建一个虚拟环境

pipenv --three

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

安装您需要的任何软件包。例如

pipenv install jupyter

这将在其中创建一个 Pipfile.lock~/foo/bob/

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

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

和以前一样, pipenv 将alice-signature/~/.local/share/virtualenvs/. 删除该文件夹并将其替换为指向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,并且从这些目录中的任何一个安装的包都将被共享。

于 2018-02-13T18:06:57.390 回答