Не удается установить через 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$
8 ответов:
создайте свою среду virtualenv в пути без пробелов. Вот почему это происходит:
когда вы создаете среду, она устанавливает . В этом
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не существует, поэтому он терпит неудачу.
для тех, кто сталкивается с этой проблемой, я обнаружил, что длина пути может вызвать проблемы, а также, без использования каких-либо пробелов (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работал просто отлично, см. комментарий Алекса ниже
icktoofay правильно о причине.
чтобы использовать PIP в виртуальное окружение в каталог с пробелами, редактирование
/path/to/env/bin/pip, заменив shebang в верхней части с#!/usr/bin/env python(или#!/usr/bin/env pypyЕсли вы используете pypy).обратите внимание, что virtualenv изменяет вашу среду таким образом, что
/usr/bin/env pythonотносится кpythonопределяется virtualenv.
не будет работать, если:
- вы не установили pip в вашей системе. (вы должны установить pip сначала в вашей системе, прежде чем вы можете использовать его в virtualenv. Для установки
pipна Ubuntu, используйте командуsudo apt-get install python-pipилиsudo apt-get install python3-pip)- путь к папке виртуальной среды содержит пространство(ы).(пример: / home / username / my folder name with spaces / newvirtualenv)
- в путь к папке виртуальной среды слишком длинный. пример: /home/username/mytoobigpath/somefolder/anotherfolder/someanotherfolder/someanotherfolderagain/myvirtualenv. (попробуйте переименовать родительские папки с меньшим имена)
если вы не можете переименовать папки или изменить путь по какой-либо причине, goto
yourvirtualenvfolder/bin(через
Я получил ту же ошибку в 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
У меня была очень похожая проблема на мою 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 в путь без пробелов. Результат:провал.
- переустановите мой дистрибутив Anaconda python на путь, который не содержит скобок "[" и"]". У него были пробелы в пути. Результат:провал.
- переустановите мой Anaconda python распределение по пути, который также не содержит пробелов. В папке VE все еще были пробелы в пути. Результат:успехов!
Так что, по крайней мере, установка Anaconda (python) проста,путь, не загрязненный космосом, был решающим. Возможно, установка win32api также была важна. Не уверенный.
Я нашел это из поиска 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
в моем случае отключите окружение и
source bin/activateснова работает.похоже, что содержимое моей папки имеет те же имена вложенных папок, что и сгенерированные
virtualenv, как ящик, lib etc. И после копирования в Мои файлы, реактивировать среду пустьvirtualenvдля обновления новой информации.
Comments