无法通过Virtualenv与pip安装

时间:2011-10-27 02:08:48

标签: python pip

以下是我运行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$ 

10 个答案:

答案 0 :(得分:122)

在没有空格的路径中创建virtualenv环境。这就是它发生的原因:

创建环境时,它会设置bin目录。在那个bin目录中是与环境相关的所有可执行文件。有些是脚本。您可能知道,hashbang用于告诉系统使用哪个解释器来运行脚本。您可能经常在脚本的顶部看到这个:

#!/usr/bin/env python

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

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

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

#!/tmp/oh no/bin/python

当系统尝试执行该操作时,它将尝试使用参数/tmp/ohno/bin/python执行命令/tmp/test.py/tmp/oh不存在,因此失败。

答案 1 :(得分:21)

对于遇到此问题的人,我发现路径的长度也可能导致问题,而不使用任何空格(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的评论

答案 2 :(得分:16)

pip命令在以下情况下无法正常工作:

  • 您尚未在系统中安装pip。(您必须先在系统中安装pip,然后才能在virtualenv中使用它。要在Ubuntu上安装pip,请使用命令{ {1}}或sudo apt-get install python-pip
  • 虚拟环境文件夹的路径包含空格(例如:/ home / username / my folder name with spaces / newvirtualenv)
  • 虚拟环境文件夹的路径太长。 示例:/ home / username / mytoobigpath / somefolder / anotherfolder / someanotherfolder / someanotherfolderagain / myvirtualenv。(尝试重命名名称较小的父文件夹)

如果由于某种原因无法重命名文件夹或更改路径,请转到sudo apt-get install python3-pip(使用yourvirtualenvfolder/bin命令),然后尝试cd

答案 3 :(得分:14)

icktoofay关于原因是正确的。

要在包含空格的目录中使用带有virtualenv的pip,请修改/path/to/env/bin/pip,将顶部的shebang替换为#!/usr/bin/env python(如果您正在使用pypy,则替换#!/usr/bin/env pypy

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

答案 4 :(得分:1)

我在RedHat中遇到了同样的错误。 Python 2.7.3由我自己配置​​和制作。 [root @ Ifx安装程序] #pip install Django -bash:/ usr / local / bin / pip:/usr/local/bin/python2.7:错误的解释器:权限被拒绝

解决方案:在/ usr / local / bin / pip中,将第一行#!/ usr / local / bin / python2.7替换为实际的Python路径#!/ root / installer / Python-2.7.5 / python < / p>

答案 5 :(得分:0)

我的 Windows 7 计算机上遇到了一个非常类似的问题。这两条路径,我的python发行版和我的VE 都有空格。几个月前它工作正常。我在virtualenv网站上找到了以下注释:

**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。结果:失败
  4. 将我的Anaconda python发行版重新安装到不包含“[”和“]”括号的路径。 VE在路径中有空格。结果:失败
  5. 将我的Anaconda python发行版重新安装到也不包含任何空格的路径。 VE文件夹在路径中仍有空格。结果:成功!
  6. 因此,至少Anaconda(python)安装简单,非空间污染路径至关重要。也许win32api安装也很重要。不确定。

答案 6 :(得分:0)

我在遇到同样的问题时从Google搜索中发现了这一点,发现这非常有用。 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,就像创建它时一样,否则可能会覆盖python版本。这将按预期工作......

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

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

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

答案 7 :(得分:0)

对于我来说,请停用环境,然后source bin/activate再次起作用。

似乎我的文件夹内容具有与virtualenv生成的子文件夹名称相同的子文件夹名称,例如bin,lib等。在复制文件后,重新激活环境,让virtualenv更新新信息。 / p>

答案 8 :(得分:0)

在Python 3.7上,我对此没有任何问题,但是当我不得不使用Python 3.6时,确实有问题。我在Github上找到的最简单的解决方法是:

代替:

pip install -r requirements.txt

我使用:

python env/bin/pip install -r requirements.txt

因此,您实际上直接指向虚拟环境目录中的pip文件。当然,您需要先激活它,然后再尝试此操作。希望这对来这里的人有所帮助!

答案 9 :(得分:-1)

如果是在windows上,可能是由于dll更改(由其他软件)引起的 安装 openSSL 会修复它。 https://slproweb.com/products/Win32OpenSSL.html

它会自动将 dll 更新到较新的版本。