【发布时间】:2018-02-13 18:06:57
【问题描述】:
Pipenv 虚拟环境 (venv) 将与子文件夹共享。
因此,例如,如果您在 ~/foo/ 中安装了 venv,则可以在 ~/foo/baz/ 中访问它
但是如果您想在~/foo/bob/ 和~/baz/alice/ 之间共享相同的 venv 怎么办?
以下类型对我有用。希望能帮到你。
【问题讨论】:
Pipenv 虚拟环境 (venv) 将与子文件夹共享。
因此,例如,如果您在 ~/foo/ 中安装了 venv,则可以在 ~/foo/baz/ 中访问它
但是如果您想在~/foo/bob/ 和~/baz/alice/ 之间共享相同的 venv 怎么办?
以下类型对我有用。希望能帮到你。
【问题讨论】:
pipenv 中有一个未记录的功能:如果您在项目根目录中创建一个名为 .venv 的文件并带有指向 virtualenv 的路径,pipenv 将使用该路径而不是自动生成的路径。
(您仍然需要保持Pipfile's 和Pipfile.locks 同步。按照@MalikKoné 的建议使它们成为符号链接可能会这样做,但如果Pipfiles 受到版本控制,则不会。 )
不过,这是is more fit for cases when you already have an established set of environments that you wish to reuse。否则,将环境放置在任意位置最终很容易造成混乱。
【讨论】:
与 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/ 中,将Pipfile 和Pipfile.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,并且从这些目录中安装的软件包将被共享.
【讨论】:
Pipfiles 处于版本控制之下(正如他们应该做的那样),则符号链接将不会执行。