虚拟环境导入错误

11 投票
3 回答
29461 浏览
提问于 2025-04-15 17:03

我在使用virtualenv的时候遇到了一些问题。我经常用它,在我的开发电脑和几个服务器上都用过。但是在我最近尝试的这台服务器上,我遇到了麻烦。

我用一个叫做--no-site-packages的参数创建了一个virtualenv,然后在这个虚拟环境里安装了一些Python模块。我可以确认这些模块确实在virtualenv的site-packages文件夹里,看起来一切正常。

但是当我尝试运行:source virtualenv/bin/activate,然后导入其中一个模块python import modulename时,却出现了一个导入错误,提示说这个模块不存在。这是怎么回事呢?看起来它并没有真正激活,尽管它显示说已经激活了。

有没有人知道怎么解决这个问题?

3 个回答

0

如果我没记错的话,激活脚本的作用就是把你的虚拟环境放在路径的最前面,这样当你输入“python”时,它会优先找到你虚拟环境里的那个版本。如果激活脚本出问题了,你也可以手动修改你的路径。另外,你可以去这里搜索“activate”: http://pylonsbook.com/en/1.1/installing-pylons.html#setting-up-a-virtual-python-environment。这个链接会告诉你为什么激活命令可能会失败。

9

在激活虚拟环境之后,试试:

$ python
>>> import sys
>>> sys.executable
...

... 然后看看你是否在运行预期的可执行文件。

还要检查:

>>> sys.path
[...]
23

请问这台机器上有没有为“python”设置过别名?如果有的话,这个别名会优先于通过激活环境所做的路径修改,这可能会导致使用错误的python程序。

你可以直接运行virtualenv/bin/python(不需要激活环境),看看能否导入你的模块。

如果这样能解决问题,那你只需要去掉你的python别名就行了。

撰写回答