Подтвердить что ты не робот

Не удается установить через pip с помощью 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$ 
4b9b3361

Ответ 1

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

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

#!/usr/bin/env python

Если script находится в /tmp/test.py, который сообщает системе выполнить эту команду для выполнения script:

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

В вашем случае virtualenv создает скрипты, подобные этому:

#!/tmp/oh no/bin/python

Когда система попытается выполнить это, он попытается выполнить команду /tmp/oh с аргументами no/bin/python и /tmp/test.py. /tmp/oh не существует, поэтому он терпит неудачу.

Ответ 2

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

Ответ 3

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

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

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

Ответ 4

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

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

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

Ответ 5

Я получил ту же ошибку в 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

Ответ 6

У меня была очень похожая проблема на моей машине 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.

Следующие шаги приводят меня к успеху:

  • Убедитесь, что я использовал pip для установки virtualenv, и это последняя версия (pip-7.1.0). Результат: сбой.
  • Установите win32api. Результат: сбой (хотя была некоторая ошибка в самом конце процесса установки).
  • Попробуйте установить мой VE по пути без пробелов. Результат: сбой.
  • Переустановите дистрибутив python Anaconda на путь, который не содержит скобки "[" и "]". У VE были пробелы на пути. Результат: сбой.
  • Переустановите дистрибутив Anaconda python на путь, который также не содержит пробелов. В папке VE по-прежнему были пробелы. Результат: успех!

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

Ответ 7

Я нашел это из поиска 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

Ответ 8

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

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

Ответ 9

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

Вместо:

pip install -r requirements.txt

Я использую:

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

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