【问题标题】:Import error with virtualenvvirtualenv 导入错误
【发布时间】:2009-12-15 17:26:21
【问题描述】:

我对 virtualenv 有疑问。我经常使用它,我在我的开发机器和几台服务器上使用它。但是在我尝试使用的最后一台服务器上,我遇到了问题。

我使用 --no-site-packages 参数创建了一个 virtualenv,然后在 virtualenv 中安装了一些 python 模块。我可以确认这些模块位于 virtualenvs 站点包内,并且一切似乎都很好。

但是当我尝试这样做时:source virtualenv/bin/activate 然后导入其中一个模块python import modulename 我收到一个导入错误,指出该模块不存在。这是怎么回事?即使它说它会激活,它似乎也永远不会激活。

有人知道如何解决这个问题吗?

【问题讨论】:

    标签: python virtualenv


    【解决方案1】:

    这台机器上是否有活动的“python”别名?这将优先于由 activate 进行的 PATH 修改,并可能导致使用错误的 python 二进制文件。

    尝试直接运行virtualenv/bin/python(无需激活),看看是否可以导入你的模块。

    如果这能解决问题,你只需要摆脱你的 python bash 别名。

    【讨论】:

    • 谢谢,就是这样。想不通是什么原因。你现在如何让它成为一个永久性的改变,这样我就不必每次都做 venv/bin/python 了?
    • 我遇到了同样的问题。你如何摆脱 bash 别名?
    • 好吧,大概是在 bash 启动文件中的某个位置使用“alias”命令创建别名:.bashrc 或 .bash_profile,或者如果您在共享系统上,则可能在其中设置了一些东西像 /etc/bash.bashrc 这样的系统文件?只需找到创建别名的位置,删除/注释该行,然后启动一个新的 shell,它就应该消失了。
    • 您能否详细说明如何进行检查?我遇到了同样的问题,正如我在这个问题中提到的那样:stackoverflow.com/questions/44102729/…
    【解决方案2】:

    激活虚拟环境后,尝试:

    $ python
    >>> import sys
    >>> sys.executable
    ...
    

    ...看看您是否正在运行预期的可执行文件。

    同时检查:

    >>> sys.path
    [...]
    

    【讨论】:

    • 然后呢??
    【解决方案3】:

    IIRC,activate 脚本只是将你的虚拟环境放在你的路径上,所以当你输入“python”时,它会首先在你的虚拟环境中找到那个。如果激活脚本失败,您始终可以手动编辑路径。另外 - 去这里搜索“激活”:http://pylonsbook.com/en/1.1/installing-pylons.html#setting-up-a-virtual-python-environment。这会告诉你为什么激活命令会失败。

    【讨论】:

      猜你喜欢
      • 2012-01-29
      • 2012-11-25
      • 2016-01-10
      • 2012-02-28
      • 2011-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多