Не удается установить через pip с Virtualenv - PullRequest
61 голосов
/ 27 октября 2011

Ниже приведена ошибка, которую я получаю при запуске 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$ 

Ответы [ 9 ]

122 голосов
/ 27 октября 2011

Создайте свою среду virtualenv на пути без пробелов.Вот почему это происходит:

Когда вы создаете среду, она устанавливает каталог bin.В этом каталоге bin находятся все исполняемые файлы, относящиеся к среде.Некоторые из них являются сценариями.Как вы, возможно, знаете, hashbangs используются, чтобы сообщить системе, какой интерпретатор использовать для запуска скрипта.Вы можете часто видеть это в верхней части сценариев:

#!/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 не существует, поэтому он терпит неудачу.

21 голосов
/ 04 июня 2015

Для тех, кто сталкивался с этой проблемой, я обнаружил, что длина пути также может вызывать проблемы, без использования пробелов (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

работал просто отлично, см. Комментарий Алекса ниже

19 голосов
/ 28 декабря 2016

pip команда не будет работать, если:

  • Вы не установили pip в своей системе. (сначала необходимо установить pip в своей системе, прежде чем использовать его в virtualenv. Чтобы установить pip в Ubuntu, используйте команду sudo apt-get install python-pip или sudo apt-get install python3-pip)
  • Путь к папке вашей виртуальной среды содержит пробелы (я) . (Пример: / home / username / имя моей папки с пробелами / newvirtualenv)
  • Слишком длинный путь к папке виртуальной среды. Пример: /home/username/mytoobigpath/somefolder/anotherfolder/someanotherfolder/someanotherfolderagain/myvirtualenv. (Попробуйте переименовать родительские папки с меньшими именами)

Если по каким-то причинам вы не можете переименовать папки или изменить путь, перейдите к yourvirtualenvfolder/bin (с помощью команды cd) и затем попробуйте ./python pip install packagename.

14 голосов
/ 04 декабря 2013

icktoofay верен в отношении причины.

Чтобы использовать pip с virtualenv в каталоге с пробелами, отредактируйте /path/to/env/bin/pip, заменив шебанг в верхней части на #!/usr/bin/env python (или #!/usr/bin/env pypy, если вы используете pypy).

Обратите внимание, что virtualenv изменяет вашу среду так, что /usr/bin/env python относится к python, определенному virtualenv.

1 голос
/ 22 мая 2014

Я получил ту же ошибку в RedHat. Python 2.7.3 настроен и сделан самостоятельно. [root @ Ifx installer] # 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

0 голосов
/ 12 ноября 2018

На Python 3.7 у меня не было никаких проблем с этим, но когда мне пришлось использовать Python 3.6, у меня была проблема. Самый простой обходной путь, который я нашел на Github, был такой:

Вместо:

pip install -r requirements.txt

Я использую:

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

Таким образом, вы на самом деле прямо указываете на файл pip в каталоге вашей виртуальной среды. Конечно, вам нужно активировать его, прежде чем пытаться это. Надеюсь, это поможет тому, кто придет сюда!

0 голосов
/ 13 сентября 2018

В моем случае отключите среду и source bin/activate снова заработает.

Похоже, что содержимое моей папки имеет те же имена подпапок, что и virtualenv, такие как bin, lib и т. Д. И после копирования в мои файлы повторно активируйте среду, и пусть virtualenv обновит новую информацию.

0 голосов
/ 06 апреля 2017

Я нашел это в поиске 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
0 голосов
/ 13 августа 2015

У меня была очень похожая проблема на моей 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. Переустановите мой дистрибутив Python Anaconda на путь, который не содержит скобок "[" и "]". У VE были пробелы в пути. Результат: ошибка .
  5. Переустановите мой дистрибутив Python Anaconda на путь, который также не содержит пробелов. В папке VE все еще были пробелы в пути. Результат: успех!

Так что, по крайней мере, простая установка Anaconda (python), путь без загрязнения окружающей среды, был решающим . Возможно, установка win32api также была важна. Не уверен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...