我有一个基于django的应用程序,我正在从virtualbox共享文件夹中运行。当开始使用“ runserver”时,出现错误,指示找不到模块。将完全相同的代码复制到本地文件系统上的目录后,它将启动并按预期运行。
有人在使用virtualbox和python时看到过类似的东西吗?
当从已安装的共享文件夹与本地文件夹运行python时,模块解析的工作方式有所不同,但是我找不到能表明它是否是由该文件夹的安装方式或python引起的吸烟枪。
谢谢!
请避免将您的项目(大量文件/目录)放在vboxsf
(默认的同步文件夹)上。
vboxsf
缺少对符号/硬链接的支持,这可能会引起问题(例如,使用git作为版本控制)。在此处查看票证#818,但仍未修复。
您可能会遇到文件系统区分大小写的问题。我花了几个小时才自己弄清楚。共享文件夹不区分大小写,但是本地文件夹区分大小写,因为它们位于其他文件系统(ext3 / 4)上。因此,您将遇到以下问题:当前目录中的python文件将覆盖同名的导入。
带有pycrypto的简单示例显示了此内容(如果没有,则为pip install pycrypto
:]
vagrant@virtualos:/mnt/shared_folder$ python -c 'from Crypto.PublicKey import RSA'
vagrant@virtualos:/mnt/shared_folder$ touch crypto.py
vagrant@virtualos:/mnt/shared_folder$ python -c 'from Crypto.PublicKey import RSA'
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named PublicKey
如果我在本地(ext4)目录上执行相同的操作,则可以正常工作。似乎python具有不同的导入逻辑,具体取决于其运行的操作系统。
很遗憾,除了手动将文件复制到我的VM而不是使用共享文件夹之外,我没有找到一个很好的解决方案。
我发现的一个解决方案是将带有cifs的共享文件夹安装到VM中。这似乎完美无缺。我没有找到vboxsf的解决方案。