3

我在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在产生上述错误后根本不起作用。

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

(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再次发挥作用的想法。

4

3 回答 3

5

如果找不到模块,肯定会发生一些可疑的事情time——据我所知,模块实际上是内置在 Python 二进制文件本身中的,所以好像没有一个time.pyortime.so文件可以被删除。看起来好像您的 virtualenv 中的 Python 已经以某种方式损坏了,或者环境中有一些东西把它弄乱了。

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

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

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

于 2013-07-16T10:22:09.777 回答
2

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

查看我的快速截屏视频。在其中,我表明:

  • python环境坏了
  • 重新创建 python 环境使其工作
于 2013-08-15T20:04:39.837 回答
0

我今天收到这个错误。因为我使用virtualenv,然后输入这个,但是,我的python脚本仍然包含这个 #!/usr/bin/python2.6 删除这句话就可以了

于 2017-06-26T08:53:52.220 回答