2013-11-25 23 views
0

我有一个基于django的应用程序,我从一个virtualbox共享文件夹运行。当开始使用'runserver'时,我收到一个错误,指示找不到模块。在将相同的确切代码复制到本地文件系统上的目录后,它会按预期方式启动并运行。从装入的文件系统运行python

任何人在使用virtualbox和python时看到过这样的东西吗?

从安装的共享文件夹和本地文件夹运行python时,看起来模块分辨率工作方式不同,但是我找不到表明它是由该文件夹的挂载方式引起的冒烟枪还是蟒蛇。

谢谢!

+0

您是否在虚拟机上安装了django?如何在虚拟机上正确设置PATH? – JonathanV

+0

是的,一切安装正确。我做了一个简单的应用程序目录的cp -R,并从本地目录(不是共享文件夹)启动它,它工作得很好。 – RAKilcoyne

回答

0

请尽量避免将您的项目(大量的文件/目录)放在vboxsf(默认同步文件夹)上。

vboxsf缺少对符号/硬链接的支持,这可能会导致问题(例如,使用git作为版本控制)。在这里看到票#818,它仍然不是固定的。

0

您有可能遇到文件系统区分大小写的问题。我花了几个小时才弄清楚了这一点。共享文件夹不区分大小写,但本地文件夹区分大小写,因为它们位于不同的文件系统(ext3/4)上。所以你会遇到问题,当前目录中的python文件会覆盖同名文件的导入。

与pycrypto显示一个简单的例子(pip install pycrypto,如果你没有的话):

[email protected]:/mnt/shared_folder$ python -c 'from Crypto.PublicKey import RSA' 
[email protected]:/mnt/shared_folder$ touch crypto.py 
[email protected]:/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具有不同的导入逻辑,具体取决于它运行的操作系统。

不幸的是,我还没有找到一个很好的解决方案,而不是手动将文件复制到我的虚拟机,而不是使用共享文件夹。