Как избежать "отказано в доступе", когда с помощью pip в виртуальное окружение
Я пытаюсь развернуть пакет Python с помощью pip в виртуальной среде на компьютере Ubuntu, но возникают проблемы, связанные с разрешением. Например:
(TestVirtualEnv)test@testServer:~$ pip install markdown2
завершается путем:
ошибка: не удалось создать '/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py': в разрешении отказано
Я не могу sudo, так как он будет устанавливать пакет глобально, а не в виртуальной среде. Я chownЭд site-packages;ls показывает только каталоги, связанные с easy_install,pip и setuptools, и ничего связанного с уценкой.
как развернуть пакет в виртуальной среде с pip без возникновения ошибок, связанных с разрешением?
6 ответов:
virtualenvпроблемы с разрешениями могут возникнуть при созданииvirtualenvКакsudoа затем работать безsudoнаvirtualenv.как выяснилось в комментарии вашего вопроса, решение здесь заключается в создать the
virtualenvбезsudoуметь работа (esp. пишите) в нем безsudo.
устранение:
Если вы создали виртуальное окружение пользователя root, выполните следующую команду:
sudo chown -R your_username:your_username path/to/virtuaelenv/Это, вероятно, решит вашу проблему.
Ура
Я не создавал свой virtualenv с помощью sudo. Так что ответ Себастьяна ко мне не относился. Мой проект называется
utils. Я проверилutilsкаталог и увидел это:-rw-r--r-- 1 macuser staff 983 6 Jan 15:17 README.md drwxr-xr-x 6 root staff 204 6 Jan 14:36 utils.egg-info -rw-r--r-- 1 macuser staff 31 6 Jan 15:09 requirements.txtКак видите,
utils.egg-infoпринадлежитrootнеmacuser. Вот почему он давал мнеpermission deniedошибка. Мне также пришлось удалить/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-linkкак он был созданrootкак хорошо. Я сделалpip install -e .снова после удаления тех, и это сработало.
В моем случае, я использую
mkvirtualenv, но не сказал, что я буду использовать python3. Я получил эту ошибку:mkvirtualenv hug pip3 install hug -U .... error: could not create '/usr/lib/python3.4/site-packages': Permission deniedон работал после указания python3:
mkvirtualenv --python=/usr/bin/python3 hug pip3 install hug -U
вы не активировал виртуальную среду перед использованием pip.
попробуйте это:
$(your venv path) . bin/activateа затем использовать требования pip-R.txt в вашей главной папке
при создании virtualenv если вы используете sudo каталог создается с корнем privileges.So при попытке установить пакет с пользователем, не являющимся пользователем sudo, у вас не будет разрешения на установку в него. Поэтому всегда создавайте virtualenv без sudo и устанавливайте без sudo.
вы также можете скопировать пакеты, установленные на глобальном python в virtualenv.
cp -r /lib/python/site-packages/* virtualenv/lib/python/site-packages/
Comments