【问题标题】:Using virtualenv with spaces in a path在路径中使用带有空格的 virtualenv
【发布时间】:2013-03-06 12:43:21
【问题描述】:

我在 Mac 上设置了 virtualenv 环境,但无法让 Pip 安装软件包。它失败并出现以下错误:

/Volumes/Macintosh: bad interpreter: No such file or directory

我将问题追踪到路径中有一个空格,如下所示:https://stackoverflow.com/a/10873611/126564
(路径为/Volumes/Macintosh HD/Python/my_project

但这有点问题。建议的解决方案是:

“只需​​将您的 virtualenv 环境放在没有空格的路径中,”

带空格的部分是卷本身。我所有的路径都会有一个空格,除非我将它们存储在/ 的目录中。而且我不认为“将你的东西存储在用户空间之外”是一个好的解决方案。

有没有更好的解决方案?

【问题讨论】:

  • 更好的解决方案 - 为 virtualenv 提供修复?
  • 除了努力修复 virtualenv 或者使用安装后挂钩或其他东西破解您的方式之外,您可能需要考虑重命名您的卷。
  • 这是 virtualenv 项目的一个未解决问题:github.com/pypa/virtualenv/issues/53
  • 手动转义 ./bin 中的路径似乎可行,因此我在问题跟踪器中对此效果发表了评论。我不知道我是否想尝试提供修复,因为我有点 Python 新手。
  • 当我试图让我的程序通过 windows + r 运行时,我在我的 Windows 上遇到了类似的问题。它一直给我 errno2 没有这样的路径或目录,所以不用说我很沮丧,试图弄清楚如何使 shebang 与空白一起工作,只是直接在 C: 上为我的程序创建了一个新的 project_folder。奇怪的是,即使我的 Python 主文件夹位于包含带有空格的文件夹的路径中,pip 以某种方式在 cmd 中工作以获取模块。

标签: python macos virtualenv pip


【解决方案1】:

试试这个:

  • 编辑bin/activate、更改VIRTUAL_ENV='/Volumes/Macintosh HD/Python/my_project'和更改PATH="$VIRTUAL_ENV/bin:$PATH",使其在您的环境中工作。使用echo $PATH 来检查它是否有效。
  • 编辑bin/pipbin/easy_install,将两个文件的第一行改为

    #!/usr/bin/env python

经过以上 2 个步骤,您的 virtualenv 就可以正常工作了(也可以使用 pip/easy_install)。

【讨论】:

  • 在完成上述修复后,现在我的 virtualenv 指向了 virtualenv -p 指定的错误 python 安装
  • 你也可以使用sed -i '/^#!/ s@".*/\([^/]\+\)"@/usr/bin/env \1@' env/bin/*
  • 这个问题可能会解决问题,但坦率地说,我不明白说明。将 PATH 更改为 什么?为什么?
  • 如果我知道要改成什么,我就不会问这个问题了。
  • @NicolasBouliane 在空格前添加反斜杠。所以在这种情况下,只需将VIRTUAL_ENV='/Volumes/Macintosh HD/Python/my_project' 更改为VIRTUAL_ENV='/Volumes/Macintosh\ HD/Python/my_project'
【解决方案2】:

请注意,您不必将项目文件夹用于 virtualenv。例如,您可以将您的 virtualenv 放入 /tmp 文件夹或任何其他没有空格的文件夹:

virtualenv /tmp/temporary_virtualenv
virtualenv /home/my_envs/env_for_projectname

【讨论】:

  • 对我来说最好的解决方案,因为 venv 文件很容易被覆盖,丢失你的编辑
  • 真正的最佳解决方案 - 最少的头痛。谢谢@Oleksandr Fedorov
【解决方案3】:

我还有另一个解决方法 - 你只需要使用 pip package 而不是 pip script。例如:

python -m pip install .

甚至:

python -m pip install -U pip

对我来说就像一个魅力,不需要更改文件。

【讨论】:

    【解决方案4】:

    编辑bin/activate 文件并转义空间对我有用。 编辑并保存文件,然后运行source bin/activate

    【讨论】:

    • 您只需将 \ 放在空格或括号之前(例如:/Users/Name/Dropbox\ (Personal )/)
    • 这似乎不起作用,也许有多个文件要编辑?用列表回答会更好
    【解决方案5】:

    除非您在 Mac 上设置了非典型驱动器,否则路径 /Volumes/Macintosh HD 应该是指向 / 的符号链接。换句话说,而不是

    $ virtualenv /Volumes/Macintosh\ HD/venvpath
    

    你可以这样做

    $ virtualenv /venvpath
    

    并不是说我试图宽恕不处理文件名中的空格的软件。我同意上面的Hugo's comment:关注relevant GitHub issue

    【讨论】:

      【解决方案6】:

      截至 2018 年底,pipvirtualenv 的最新版本可以正确处理 venv 目录中的空格。

      https://github.com/pypa/virtualenv/issues/53#issuecomment-434461292

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-23
        • 1970-01-01
        • 1970-01-01
        • 2021-08-26
        • 1970-01-01
        • 2012-10-29
        • 1970-01-01
        • 2012-02-26
        相关资源
        最近更新 更多