转移到新电脑后虚拟环境中找不到虚拟环境中的虚拟机扩展
我会在前言中承认我可能不完全理解虚拟环境的内部工作原理,所以请原谅我,如果我犯了彻底失败。对于我的桌面(Mac OS X 10.7 + Python 2.7)我有一个虚拟环境,它包含我在Python中构建的Web应用程序(使用Flask作为框架)。我想在笔记本电脑上做一些工作,所以我压缩了包含虚拟环境和代码的目录,并将其转移到我的笔记本电脑上(Mac OS X 10.7 + Python 2.7)。转移到新电脑后虚拟环境中找不到虚拟环境中的虚拟机扩展
解压后,我尝试启动我的应用程序并收到以下消息:
(venv)****:*** ***$ python runserver.py
Traceback (most recent call last):
File "runserver.py", line 2, in <module>
from weirdcanada import app
File "/Users/****/****/weirdcanada/weirdcanada/__init__.py", line 3, in <module>
import weirdcanada.views
File "/Users/****/****/weirdcanada/weirdcanada/views.py", line 18, in <module>
from flaskext.principal import AnonymousIdentity
ImportError: No module named flaskext.principal
我又试图pip install flask-principal
,并安装后,我重新运行该应用程序,并收到了同样的错误。我在虚拟环境中检查了site-packages
,并且安装了flask-principal
。
我的问题:
- 我误解虚拟环境的意义呢?我应该像我一样能够复制虚拟环境吗?我认为一致性和便携性是主要特征。
- 我该如何解决这个问题?
感谢您的帮助!
我敢肯定,改变这一行:
from flaskext.principal
到
from flask.ext.principal
应该工作。
我的系统上安装了3个虚拟环境(Mac OSX 10.6 + Python2.7)。我创建了一个新的virtualenv,并突然在其他virtualenv中正常工作的代码在这里不起作用,在这种情况下,flaskext.wtf是罪魁祸首。
我在两个virtualenvs中检查了烧瓶及其扩展的版本,它们完全相同,所以版本问题也是没有问题的。
它没有任何意义,为什么这会发生,但无论如何试试这个并回复。
我不确定,但你是在调用系统范围的python安装,还是在虚拟环境中的python二进制文件?虚拟环境显然会有自己的python二进制解释器,并且应该使用该二进制文件安装所有软件包来执行安装。即在/ usr/bin /中应该有一个全系统的python二进制文件,或者在/ var/www/myapp/env/bin /或者其他类似的文件中。那就是需要在虚拟环境中获取应用程序的人。
他确实在提示中有(venv),所以我假设他来源bin /激活 – thenoviceoof 2012-07-07 16:43:43
是的,我已经从sourced进入了虚拟环境。看到我上面的评论(在第一个答案下面)。 – aaronlevin 2012-07-08 05:46:05
(请参阅下面的表述,而不是) – aaronlevin 2012-07-08 05:51:42
谢谢。这工作。但是,我不得不在我的笔记本电脑上安装所有的python模块(在虚拟环境的源代码之后)。我认为虚拟环境的好处是封装,或者我不理解链接是如何工作的。 – aaronlevin 2012-07-08 05:45:17
@weirdcanada virtualenv的目的是包分离。您应该能够在不同的项目中使用不同版本的软件包。所以每个virtualenv都需要重新安装软件包。也可以选择使用默认安装包,但在大多数情况下会失败。 – codecool 2012-07-08 06:37:03
感谢您的帮助和澄清虚拟环境的东西! – aaronlevin 2012-07-08 16:55:35