在 Vagrant 中共享一个 venv 目录
Sharing a venv directory in Vagrant
我有一个由 vagrant 管理的 Windows 10 位来宾,并且同步了一个 python 应用程序目录:
#Vagrantfile
config.vm.synced_folder "../python_app", "/vagrant_data"
我想在 OSX 主机和 Windows 来宾中都有一个 venv
,但是在来宾中尝试创建时出现错误:
Error: Unable to create directory 'C:\vagrant_data'
在来宾框中,C:\vagrant_data
包含 python_app
个文件。
并且它被符号链接到来宾中的另一个目录:
Directory of C:\
11/18/2020 03:34 PM <DIR> Users
etc...
11/18/2020 03:17 PM <SYMLINKD> vagrant [\vboxsvr\vagrant]
11/18/2020 03:17 PM <SYMLINKD> vagrant_data [\vboxsvr\vagrant_data]
我可以创建一个文件:
echo hello world > vagrant_data\hello.txt
或一个目录:
mkdir vagrant_data\removeme
这些文件也出现在主机目录中。
还没有 Scripts
或 Lib
目录。
那里 是 ,但是一个 pyvenv.cfg
文件,其中包含来自主机 (osx) 的详细信息:
home = /usr/local/bin
include-system-site-packages = false
version = 3.8.6
虽然我在guest里面有py --version 3.9
,但是home位置明显会不一样
同步目录下exclude指定文件有好的解决办法吗?
另一种选择当然是完全不同步并使用 Git 远程将文件从 devbox 传递到测试环境。
Vagrant 的 rsync
does a one-time one-way sync from the machine running to the machine being started by Vagrant.
更有意义的是将 venv
简单地移动到同步文件夹 上方 的目录中,如下所示:
config.vm.synced_folder "../my_venv/python_app", "/my_venv/python_app"
(同步 Vagrantfile 所在文件夹旁边的文件夹,而不是在其中)
这样,只同步了第二个目录,但创建了第一个目录。所以我 vagrant ssh
进入客户机,cd
进入同步目录 上方的 目录,并在那里创建 venv
。
我有一个由 vagrant 管理的 Windows 10 位来宾,并且同步了一个 python 应用程序目录:
#Vagrantfile
config.vm.synced_folder "../python_app", "/vagrant_data"
我想在 OSX 主机和 Windows 来宾中都有一个 venv
,但是在来宾中尝试创建时出现错误:
Error: Unable to create directory 'C:\vagrant_data'
在来宾框中,C:\vagrant_data
包含 python_app
个文件。
并且它被符号链接到来宾中的另一个目录:
Directory of C:\
11/18/2020 03:34 PM <DIR> Users
etc...
11/18/2020 03:17 PM <SYMLINKD> vagrant [\vboxsvr\vagrant]
11/18/2020 03:17 PM <SYMLINKD> vagrant_data [\vboxsvr\vagrant_data]
我可以创建一个文件:
echo hello world > vagrant_data\hello.txt
或一个目录:
mkdir vagrant_data\removeme
这些文件也出现在主机目录中。
还没有 Scripts
或 Lib
目录。
那里 是 ,但是一个 pyvenv.cfg
文件,其中包含来自主机 (osx) 的详细信息:
home = /usr/local/bin
include-system-site-packages = false
version = 3.8.6
虽然我在guest里面有py --version 3.9
,但是home位置明显会不一样
同步目录下exclude指定文件有好的解决办法吗?
另一种选择当然是完全不同步并使用 Git 远程将文件从 devbox 传递到测试环境。
Vagrant 的 rsync
does a one-time one-way sync from the machine running to the machine being started by Vagrant.
更有意义的是将 venv
简单地移动到同步文件夹 上方 的目录中,如下所示:
config.vm.synced_folder "../my_venv/python_app", "/my_venv/python_app"
(同步 Vagrantfile 所在文件夹旁边的文件夹,而不是在其中)
这样,只同步了第二个目录,但创建了第一个目录。所以我 vagrant ssh
进入客户机,cd
进入同步目录 上方的 目录,并在那里创建 venv
。