Я пытаюсь развернуть пакет 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
, и ничто не связано с Markdown.
Как развернуть пакет в виртуальной среде pip
без ошибок, связанных с разрешениями?
python
virtualenv
pip
Арсений Мурзенко
источник
источник
sudo
?sudo
.sudo
. Действительно, теперь пакет устанавливается правильно. Пожалуйста, не могли бы вы превратить свой комментарий в ответ, чтобы я мог его принять?virtualenv
каталог, потому что вы можете активироватьvirtualenv
с другим пользователем, но он не позволит вам устанавливать какие-либо пакеты и предоставит доступ с разрешениями.Ответы:
virtualenv
Проблемы с разрешениями могут возникнуть, когда вы создаетеvirtualenv
as,sudo
а затем работаете без негоsudo
вvirtualenv
.Как выяснилось , в комментарии на ваш вопрос, решение здесь , чтобы создать
virtualenv
без ,sudo
чтобы иметь возможность работы (особенно записи) в нем безsudo
.источник
virtualenv
без sudo?sudo
, см. Ответ @vingtoft о том, как легко это исправить, не воссоздавая егоРешение:
Если вы создали virtualenv как root, выполните следующую команду:
Вероятно, это решит вашу проблему.
Ура
источник
В моем случае я использовал
mkvirtualenv
, но не сказал, что собираюсь использовать python3. У меня такая ошибка:mkvirtualenv hug pip3 install hug -U .... error: could not create '/usr/lib/python3.4/site-packages': Permission denied
Он работал после указания python3:
источник
Я не создавал свой 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
notmacuser
. Вот почему это давало мнеpermission denied
ошибку. Мне также пришлось удалить, так/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.egg-link
как он был созданroot
. Я сделал этоpip install -e .
снова после удаления их, и это сработало.источник
Если вы создали виртуальную среду с использованием root, используйте эту команду
он предоставит вам root-доступ, а затем активирует вашу виртуальную среду с помощью этого
источник
Вы не активировали виртуальную среду перед использованием pip.
Попробуйте:
А затем используйте pip -r requirements.txt в своей основной папке
источник
У меня также было это (случайно) после создания нового venv в существующей виртуальной среде. простой способ диагностировать это - увидеть, где
python
находится символическая ссылка, то есть запустить:и убедитесь, что он указывает на соответствующий двоичный файл Python. Для большинства систем это будет
/usr/bin/python
или/usr/bin/python3
. а если он указывает на существующую виртуальную среду, это будет что-то вроде/home/youruser/somedir/bin/python
. если последнее, то я бы предложил воссоздать venv, убедившись, что вы не «внутри» какого-либо существующего virtualenv (т.е. запускаетеdeactivate
)источник
При создании virtualenv, если вы используете sudo, каталог создается с правами суперпользователя, поэтому, когда вы пытаетесь установить пакет с пользователем, отличным от sudo, у вас не будет разрешения на установку в него. Поэтому всегда создавайте virtualenv без sudo и устанавливайте без sudo.
Вы также можете копировать пакеты, установленные на глобальном Python, в virtualenv.
источник