以下是我运行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$
答案 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/oh
和no/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
,请使用命令{ {1}}或sudo apt-get install python-pip
)如果由于某种原因无法重命名文件夹或更改路径,请转到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.
以下步骤使我获得成功:
因此,至少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 更新到较新的版本。