无法通过点与Virtualenv安装

以下是我运行pip时遇到的错误:

 serkan$ rm -r mysite serkan$ pwd /Users/serkan/Desktop/Python Folder serkan$ virtualenv mysite New python executable in mysite/bin/python Installing setuptools............done. Installing pip...............done. serkan$ source mysite/bin/activate (mysite)serkan$ pip install pinax -bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory (mysite)serkan$ python pip install pinax python: can't open file 'pip': [Errno 2] No such file or directory (mysite)serkan$ python pip install Pinax python: can't open file 'pip': [Errno 2] No such file or directory (mysite)serkan$ python pip install Pinax python: can't open file 'pip': [Errno 2] No such file or directory (mysite)serkan$ python pip install Pinax python: can't open file 'pip': [Errno 2] No such file or directory (mysite)serkan$ python pip python: can't open file 'pip': [Errno 2] No such file or directory (mysite)serkan$ pip -bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory (mysite)serkan$ pip install Pinax -bash: /Users/serkan/Desktop/Python Folder/mysite/bin/pip: "/Users/serkan/Desktop/Python: bad interpreter: No such file or directory (mysite)serkan$ 

在没有空格的path中创build你的virtualenv环境。 这就是它发生的原因:

当你创build一个环境时,它会build立一个bin目录。 在这个bin目录中,都是与环境相关的可执行文件。 有些是脚本。 正如你所知道的,hashbangs被用来告诉系统用什么解释器来运行脚本。 您可能经常在脚本的顶部看到这一点:

 #!/usr/bin/env python 

如果脚本位于/tmp/test.py ,则告诉系统运行此命令来执行脚本:

 /usr/bin/env python /tmp/test.py 

在你的情况下,virtualenv正在创build这样的脚本:

 #!/tmp/oh no/bin/python 

当系统尝试执行时,它会尝试执行/tmp/oh命令,其参数是no/bin/python/tmp/test.py/tmp/oh不存在,所以失败。

对于遇到这个问题的人,我发现path的长度也可能会导致问题,而不使用任何空格(Ubuntu 12.04):

 virtualenv /home/user/some/very/longer/path/without/spaces/etc/venv 

失败的同时

 virtualenv /home/user/some/very/long/path/without/spaces/etc/venv 

工作得很好,见下面Alex的评论

icktoofay是正确的原因。

要在具有空格的目录中使用带有virtualenv的pip,请编辑/path/to/env/bin/pip ,用#!/usr/bin/env python (或#!/usr/bin/env pypy如果你使用pypy)。

请注意,virtualenv会更改您的环境,以使/usr/bin/env python引用由virtualenv定义的python

pip命令不起作用:

  • 您的系统中没有安装pip。 (你必须首先在系统中安装pip,然后才能在virtualenv中使用它。要在Ubuntu上安装pip ,请使用命令sudo apt-get install python-pipsudo apt-get install python3-pip
  • 虚拟环境文件夹的path包含空格(例如:/ home / username /我的文件夹名称与空间/ newvirtualenv)
  • 虚拟环境文件夹的path太长。 例如:/ home / username / mytoobigpath / somefolder / anotherfolder / someanfolfol / someanotherfolderagain / myvirtualenv。 (尝试用较小的名称重命名父文件夹)

如果因为某些原因无法重命名文件夹或更改path,请转到yourvirtualenvfolder/bin (使用cd命令),然后尝试使用python pip install packagename

我在RedHat中遇到了同样的错误。 Python 2.7.3是由我自己configuration​​和制作的。 [root @ Ifx安装程序]#pip安装Django -bash:/ usr / local / bin / pip:/usr/local/bin/python2.7:错误解释器:Permission denied

解决scheme:在/ usr / local / bin / pip中,用实际的Pythonpathreplace第一行#!/ usr / local / bin / python2.7#!/ root / installer / Python-2.7.5 / python

在我的Windows 7机器上,我遇到了一个非常类似的问题,并且因此而挣扎了几天。 这两个path,我的Python发行版和我的VE 都有空格 。 几个月前,它工作正常。 我在virtualenv网站上find以下说明:

 **Windows Notes** [...] To create a virtualenv under a path with spaces in it on Windows, you'll need the win32api library installed. 

以下步骤使我成功:

  1. 确保我用pip来安装virtualenv,它是最新版本(pip-7.1.0)。 结果: 失败
  2. 安装win32api。 结果: 失败 (虽然在安装过程的最后有一些错误)。
  3. 尝试安装我的VE在一个没有空格的path。 结果: 失败
  4. 将我的Anaconda python发行版重新安装到不包含“[”和“]”括号的path中。 VE在path中有空格。 结果: 失败
  5. 将我的Anaconda python发行版重新安装到不包含任何空格的path中。 VE文件夹在path中仍然有空格。 结果: 成功!

所以至lessAnaconda(python)安装简单, 没有空间污染的path是至关重要的 。 也许win32api的安装也很重要。 不确定。

我从Googlesearch中发现了这个问题,同时遇到同样的问题,并发现这非常有用。 virtualenv现在有一个--relocatable标志,将重写shebang命令到#!/usr/bin/env <the_python_version_you_used_to_create_the_virtualenv> 。 它确实带有一些注意事项,所以请务必阅读文档以了解其含义:

https://virtualenv.pypa.io/en/stable/userguide/#making-environments-relocatable

您需要使用相同的语法来重新定位virtualenv,就像创build它时一样,否则python版本可能会被覆盖。 这将按预期工作…

 virtualenv --python=python3.5 env-test virtualenv --relocatable --python=python3.5 env-test 

而这会导致#!/usr/bin/env python2.7 (至less在我的本地环境中)…

 virtualenv --python==python3.5 env-test virtualenv --relocatable env-test