无法启动 Python - ImportError: No module named posixpath

mar*_*oss 4 python rabbitmq linode celery

所以我有一个用 Python 编写的应用程序,它在 Python 2.7.3 中使用 virtualenv。应用程序使用 rabbitmq 和 celery 运行一些任务。几天来一切都很顺利,今天我注意到任务没有被处理。我登录到服务器并注意到rabbitmq 已关闭。我启动了rabbitmq服务器,然后尝试启动python解释器,我得到:

Traceback (most recent call last):
  File "/home/marcin/pyProjects/resbit/venv/lib/python2.7/site.py", line 67, in <module>
    import os
  File "/home/marcin/pyProjects/resbit/venv/lib/python2.7/os.py", line 49, in <module>
    import posixpath as path
ImportError: No module named posixpath
Run Code Online (Sandbox Code Playgroud)

这仅发生在 virtualenv 中。我可以毫无问题地启动全局 Python。我的服务器(使用 Linode)最近没有重新启动,据我所知没有安装/更新。可能发生了什么?

小智 5

看起来 virtualenv 20 有一个错误,所以你必须降级到早期版本。

  1. 通过运行确保您不在 virtualenv 中deactivate。这将退出您的 virtualenv 或告诉您您不在其中。
  2. 运行pip freeze | grep virtualenv。输出中的virtualenv 是20.* 版本吗?如果是这样,这就是您的问题——继续下一步。如果没有,这可能无济于事。
  3. 运行pip install --upgrade virtualenv==16.7.7。该--upgrade开关都是必要的升级和降级。它会将您的 virtualenv 更改为已知可以工作的版本。


hol*_*web 1

您的虚拟环境显然创建不正确或在创建后进行了修改。posixpath是一个内置模块,它是该os.path模块动态选择的替代方案之一。用于类 Unix 系统。它应该是所有 Python 环境的标准部分。

In [2]: import posixpath

In [3]: import os.path

In [4]: os.path is posixpath
Out[4]: True
Run Code Online (Sandbox Code Playgroud)

如果您无法导入,posixpath则意味着您要么以某种方式选择了错误的平台,要么您的环境不包含它(意味着它安装不正确)。