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

Как избежать "Разрешения отказа" при использовании pip с virtualenv

Я пытаюсь развернуть пакет Python с pip в виртуальной среде на машине Ubuntu, но столкнулся с проблемой, связанной с разрешением. Например:

(TestVirtualEnv)[email protected]:~$ pip install markdown2

завершается:

error: не удалось создать '/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py': Permission denied

Я не могу sudo, так как он установит пакет по всему миру, а не в виртуальную среду. я chown ed site-packages; ls отображаются только каталоги, связанные с easy_install, pip и setuptools, и ничего не связано с Markdown.

Как развернуть пакет в виртуальной среде с помощью pip, не сталкиваясь с ошибками, связанными с правами?

4b9b3361

Ответ 1

virtualenv Проблемы с разрешением могут возникать при создании virtualenv как sudo, а затем работать без sudo в virtualenv.

Как выяснилось в вашем вопросительном комментарии, решение здесь - создать virtualenv без sudo, чтобы иметь возможность работать (esp. write) в он без sudo.

Ответ 2

Решение:

Если вы создали virtualenv как root, выполните следующую команду:

sudo chown -R your_username:your_username path/to/virtuaelenv/

Это, вероятно, устранит вашу проблему.

Приветствия

Ответ 3

Я не создал свой 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 not macuser. Вот почему это давало мне ошибку permission denied. Мне также пришлось удалить /Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link, поскольку он был создан root. Я снова сделал pip install -e . после их удаления, и он сработал.

Ответ 4

В моем случае я использовал 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

Ответ 5

Вы не активировали виртуальную среду, прежде чем использовать pip.

Попробуйте:

$(your venv path) . bin/activate

И затем используйте файл pip -r requirements.txt в вашей основной папке

Ответ 6

Если вы создали виртуальную среду с использованием root, используйте эту команду

sudo su

он предоставит вам root-доступ и затем активирует вашу виртуальную среду с помощью этого

source /root/.env/ENV_NAME/bin/activate

Ответ 7

При создании virtualenv, если вы используете sudo, каталог создается с привилегиями root. Поэтому, когда вы пытаетесь установить пакет с не-sudo-пользователем, у вас не будет разрешения на установку в него. Поэтому всегда создавайте virtualenv без sudo и устанавливайте без sudo.

Вы также можете скопировать пакеты, установленные на глобальном python, в virtualenv.

cp -r /lib/python/site-packages/* virtualenv/lib/python/site-packages/