PythonAnywhere virtualenv:“无法找到平台相关的库…”
我有一个Django(1.5.1)站点在
Python 2.7.3上运行于
PythonAnywhere的virtualenv.据我所知,一切都过去很好.最近,虽然除了一些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网站的功能都运行得很好.我很欣赏任何可能让人们重新开始工作的想法. 解决方法
如果它找不到模块时间肯定有些可疑 – 据我所知,模块实际上内置于Python二进制文件本身,所以它不像是有一个time.py或time.so文件可以已被删除.看起来你的virtualenv中的Python已经以某种方式破坏了,或者有一些关于环境的东西搞乱了.
设置一个可疑的PYTHONHOME变量可能会导致Python各种麻烦,因为它找不到必要的文件,但我认为在这种情况下,virtualenv已经破坏了.事实上,我自己在PythonAnywhere上尝试了一个旧的virtualenv并遇到了同样的问题.看起来virtualenv创建的符号链接因升级而破坏,可能是最近从Debian升级到Ubuntu. 如果可能的话,我会简单地重新创建一个新的virtualenv并从那里运行.原则上你可以使用pip编写一个需求文件,这样你就可以使用完全相同版本的代码创建一个新的virtualenv,但问题是你不能运行pip来创建这个文件,QED.可能有一种聪明的方法可以使用系统Python来运行pip并从你的virtualenv中获取依赖关系,但它会变得棘手 – 它的设计不是那样的. 或者你可以联系PA开发者 – 我知道有些用户在升级时确实遇到了他们的virtualenvs问题,他们可能有狡猾的脚本可以解决问题.即使您只是构建一个新的virtualenv并使用它,我会联系他们并确保他们知道这个问题,以便他们知道它将来的升级. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |