无法通过点与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-pip
或sudo 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.
以下步骤使我成功:
- 确保我用pip来安装virtualenv,它是最新版本(pip-7.1.0)。 结果: 失败 。
- 安装win32api。 结果: 失败 (虽然在安装过程的最后有一些错误)。
- 尝试安装我的VE在一个没有空格的path。 结果: 失败 。
- 将我的Anaconda python发行版重新安装到不包含“[”和“]”括号的path中。 VE在path中有空格。 结果: 失败 。
- 将我的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