传输到新计算机后,在虚拟环境中找不到Flask扩展

时间:2012-07-07 13:51:59

标签: python virtualenv flask

我接受这一点,承认我可能不完全理解虚拟环境的内部工作,所以如果我犯了彻底的失败,请原谅我。

对于我的桌面(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

我的问题:

  1. 我是否误解了虚拟环境的观点?我应该像我一样复制虚拟环境吗?我认为一致性和可移植性是主要特征。
  2. 我该如何解决这个问题?
  3. 感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我很确定改变这一行:

    from flaskext.principal

    from flask.ext.principal

应该有用。

我的系统上安装了3个虚拟环境(Mac OSX 10.6 + Python2.7)。我创建了一个新的virtualenv,突然之间在其他virtualenv中工作正常的代码在这里工作不正常,在这种情况下,flaskext.wtf是罪魁祸首。

我检查了版本的flask及其在virtualenvs中的扩展,它们完全相同,因此版本问题也是不可能的。

为什么会发生这种情况没有任何意义,但无论如何都要尝试并回复。

答案 1 :(得分:0)

我不确定,但您是在调用系统范围的python安装,还是在虚拟环境中调用python二进制文件?虚拟环境显然会有自己的python二进制解释器,并且应该使用该二进制文件安装所有软件包以进行安装。即/ usr / bin /或其他什么应该有一个系统范围的python二进制文件,另一个在/ var / www / myapp / env / bin /或类似的东西。这是需要在虚拟环境中获得应用程序的那个。