【问题标题】:virtualenv using incorrect sys.pathvirtualenv 使用不正确的 sys.path
【发布时间】:2015-06-14 06:07:53
【问题描述】:

刚才一切正常。我不知道我做了什么惹恼了 virtualenv,但它现在表现得很奇怪。任何帮助表示赞赏。

在制作 virtualenv 时,我使用这个命令:

virtualenv -p /usr/bin/python3 venv

现在我看到我使用 pip install package 安装的包没有被 python 加载。它们通过 pip 正确安装到 venv/lib/python3.4/site-packages 目录中,但是我的 virtualenv 中的 python 没有在该目录中查找包。

在 Python 中:

import sys
sys.path
['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages']

这是错误的!它使用了错误的路径,它至少应该包括

/myhomedir/venv/lib/python3.4/site-packages

所以我可以导入我的包。

其实在Python中打开了一个virtualenv:

import sys
sys.path.append("/myhomedir/venv/lib/python3.4/site-packages")
import package

有效!!

但我不想每次使用 Python 时都必须手动附加此路径。我做了一些事情让 sys.path 很生气,我不知道那是什么。

我只是 sudo apt-get updated 和 sudo apt-get upgrade 以确保它没有冲突......没有骰子。

可能相关:

我注意到我的 virtualenv 命令输出以下行:

Using base prefix '/usr'

我不记得以前发生过这种情况。但是,即使我这样做 virtualenv venv,(没有指定 Python 版本,并且没有出现该输出)我的 sys.path 仍然是错误的并且包不加载。

有人想吗?非常感谢您的帮助。

【问题讨论】:

    标签: python ubuntu virtualenv sys.path


    【解决方案1】:

    解决了问题...如果其他人有同样的问题,请发布结果。最高级别的 PICNIC 错误。

    在我的 .bashrc 文件中,我有一个别名 python=/usr/bin/python3

    当我的 virtualenv 尝试执行 python 时,它被重新路由到 /usr/bin 而不是使用它的内部 python。

    【讨论】:

    • 两天的搜索和问答来解决这个问题。谢谢!
    • 有没有办法让环境使用内部Python而不必每次都导出python路径?
    • @LongLe 是的,只需将“alias python=python3”和“alias pip=pip3”添加到您的 ~/.bashrc 并创建一个从 /usr/bin/python 到 /usr/bin 的符号链接/python3 "sudo ln -sfn /usr/bin/python3 /usr/bin/python"
    • 我有同样的问题,但是我的 ~/.bashrc 没有那个别名,所以我不能删除它。我的 virtualenv 正在使用 /usr/bin/python3
    • 您可以检查您的 python 是否在某处被 alias | grep python 别名,然后通过 unalias python 删除该别名
    猜你喜欢
    • 1970-01-01
    • 2016-02-20
    • 2011-03-29
    • 2011-06-29
    • 2020-03-14
    • 1970-01-01
    • 1970-01-01
    • 2017-08-19
    • 1970-01-01
    相关资源
    最近更新 更多