ado*_*tyd 16 python symlink virtualbox shared-directory virtualenv
我在Ubuntu 12.04上安装了Virtualenv,并使用它来处理统一桌面下的示例项目.我正在使用VirtualBox,并且在Unity桌面上遇到了一些问题,因此改为KDE桌面.
我现在正在尝试创建一个新项目,但virtualenv不允许我在我的项目文件夹中创建一个新环境.在终端我导航到项目文件夹,键入virtualenv venv并获取以下错误消息:
Traceback (most recent call last):
File "/usr/bin/virtualenv", line 3, in <module>
virtualenv.main()
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 938, in main
never_download=options.never_download)
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 1039, in create_environment
site_packages=site_packages, clear=clear))
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 1215, in install_python
copyfile(stdinc_dir, inc_dir)
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 430, in copyfile
copyfileordir(src, dest)
File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 405, in copyfileordir
shutil.copytree(src, dest, True)
File "/usr/lib/python2.7/shutil.py", line 206, in copytree
raise Error, errors
shutil.Error: [('/usr/include/python2.7/numpy', 'venv/include/python2.7/numpy', '[Errno 30] Read-only file system')]
Run Code Online (Sandbox Code Playgroud)
谁能帮我解决这个问题?我已经尝试重新安装virtualenv但没有快乐.谢谢
Dom*_*nik 14
Virtualenv正在使用符号链接(shutil.copytree使用它们,请参阅traceback).禁用在VirtualBox共享文件夹中创建符号链接.在终端(客户机内)进行简单测试:
$ ln -s testfile
Run Code Online (Sandbox Code Playgroud)
要么你得到一个failed to create symbolic link './testfile': Read-only file system或Protocol error.
您可以通过在主机上的终端中执行来启用共享文件夹中的符号链接(来自schisamo的解决方案):
$ vboxmanage setextradata VM_NAME "VBoxInternal2/SharedFoldersEnableSymlinksCreate/NAME_OF_YOUR_SHARED_FOLDER" 1
Run Code Online (Sandbox Code Playgroud)
将VM_NAME替换为虚拟机的名称,如VirtualBox Manager中所示:

和NAME_OF_YOUR_SHARED_FOLDER以及您可以在虚拟机的设置中看到的共享文件夹的名称:

设置完成后,重新启动VirtualBox.
您可以使用检查设置(在主机上)
$ vboxmanage getextradata VM_NAME enumerate
Run Code Online (Sandbox Code Playgroud)
修复Windows(Ahti Kitsik)(感谢Bryan的回答).
VirtualBox实现了自4.0版(适用于Linux和Solaris)以来共享文件夹的符号链接,但出于安全原因从版本4.1.8开始禁用.这可能是它首次为你工作而后来没有工作的原因.
ado*_*tyd 11
好吧,经过一番深入的谷歌搜索后发现这是一个VirtualBox问题,而不是Ubuntu问题.共享文件夹受此活动保护.我不知道它是如何/为什么它第一次工作,但它是一个已知的错误.我在共享文件夹之外创建了一个没有问题的项目.感谢Dougal的输入.
Ahti Kitsik在他的博客上发布了一个解决方法:https://ahtik.com/fixing-your-virtualbox-shared-folder-symlink-error/
VBoxManage setextradata YOURVMNAME VBoxInternal2/SharedFoldersEnableSymlinksCreate/YOURSHAREFOLDERNAME 1
Run Code Online (Sandbox Code Playgroud)
YOURSHAREFOLDERNAME 是VirtualBox的共享文件夹的名称.
如果你碰巧使用Vagrant,这里是你的Vagrantfile的修复程序:
config.vm.provider :virtualbox do |vb|
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate//vagrant","1"]
end
Run Code Online (Sandbox Code Playgroud)