PythonAnywhere + virtualenv:“找不到平台依赖库<exec_prefix> ...”</exec_prefix>

时间:2013-07-16 07:05:28

标签: python django virtualenv pip pythonanywhere

我在PythonAnywhere的virtualenv中有一个运行在Python 2.7.3上的Django(1.5.1)站点。据我记忆,过去一切都很好。最近,虽然除了一些Django代码之外我没有改变任何东西,但是当我运行pip时,我收到以下消息:

(venv)11:34 ~ $ pip
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Traceback (most recent call last):
  File "/*~*//venv/bin/pip", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/*~*//venv/lib/python2.7/site-packages/distribute-0.6.34-py2.7.egg/pkg_resources.py", line 16, in <module>
    import sys, os, zipimport, time, re, imp, types
ImportError: No module named time

毋庸置疑,pip在产生上述错误后根本不起作用。

当我在激活virtualenv的情况下运行python时,我再次收到以下错误:

(venv)11:34 ~ $ python
Could not find platform dependent libraries <exec_prefix>
Consider setting $PYTHONHOME to <prefix>[:<exec_prefix>]
Python 2.7.3 (default, Apr 29 2013, 15:12:04) 
[GCC 4.4.5] on linux2
Type "help", "copyright", "credits" or "license" for more information.
Traceback (most recent call last):
  File "/*~*//.pythonstartup.py", line 1, in <module>
    import rlcompleter
ImportError: No module named rlcompleter
>>>

但是,此后,Python控制台似乎处于正常工作状态。

如果没有激活virtualenv,python运行正常,没有任何错误。

几周前,当我上次运行pip并安装了一些软件包时,一切都很顺利,但现在,pip无法正常工作,尽管我的所有Django网站的功能都运行良好。我感谢任何可以让pip重新开始工作的想法。

3 个答案:

答案 0 :(得分:5)

如果它找不到模块time肯定有些可疑 - 据我所知,模块实际上内置于Python二进制文件本身,所以它不像是{{1可能已删除的{}或time.py文件。看起来你的virtualenv中的Python已经以某种方式破坏了,或者有一些关于环境的东西搞乱了。

设置一个可疑的time.so变量可能会导致Python出现各种麻烦,因为它找不到必要的文件,但我认为在这种情况下,virtualenv已经破坏了。事实上,我自己在PythonAnywhere上尝试了一个旧的virtualenv并遇到了同样的问题。看起来virtualenv创建的符号链接因升级而破坏,可能是最近从Debian升级到Ubuntu。

如果可能的话,我会简单地重新创建一个新的virtualenv并从那里运行。原则上,您可以使用PYTHONHOME编写一个需求文件,这样您就可以使用完全相同的代码版本创建一个新的virtualenv,但问题是您无法运行pip来创建此文件,QED。可能有一种聪明的方法可以使用系统Python来运行pip并从你的virtualenv中获取依赖关系,但它会变得棘手 - 它的设计不是那样的。

或者您可以联系PA开发人员 - 我知道有些用户在升级时确实遇到了他们的virtualenvs问题,他们可能有狡猾的脚本可以解决问题。即使您只是构建一个新的virtualenv并使用它,我会联系他们并确保他们知道这个问题,以便他们知道它将来的升级。

答案 1 :(得分:2)

今天下午我发生了这件事。我从Mint 14升级到Mint 15,看起来前者的系统python是2.7.3而后者是2.7.4。我通过删除我的virtualenv(使用python 2.7.3)然后使用python 2.7.4重新创建它来解决这个问题。

检查我的quick screencast。在其中,我表明:

  • python环境破碎
  • 重新创建python env使其工作

答案 2 :(得分:0)

我今天收到此错误。因为我使用virtualenv,并输入此,但是,我的python脚本仍然包含这个 app.UseForwardedHeaders(new ForwardedHeadersOptions { ForwardedHeaders = ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto, RequireHeaderSymmetry = false, }); 删除这句话就行了