Ошибка разрешения: [Ошибка 13] Отказано в разрешении на использование virtualenv и virtualenvwrapper с файлом pip-20.0.2-py2.py3-none-any.whl wheel

#python #python-3.x #pip #virtualenv #virtualenvwrapper

#python #python-3.x #pip #virtualenv #virtualenvwrapper

Вопрос:

Я обычно использую virtualenv и virtualenvwrapper для создания виртуальных сред для моих проектов. При попытке создать новую виртуальную среду с помощью следующей команды:

 mkvirtualenv -a . -p python3.7 venv
  

Я получаю следующее сообщение об ошибке:

 Exception in thread Thread-1:
Traceback (most recent call last):
  File "/usr/lib/python3.6/threading.py", line 916, in _bootstrap_inner
    self.run()
  File "/usr/lib/python3.6/threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/virtualenv/seed/via_app_data/via_app_data.py", line 75, in _get
    self.app_data,
  File "/home/ubuntu/.local/lib/python3.6/site-packages/virtualenv/seed/embed/wheels/acquire.py", line 28, in get_wheels
    acquire_from_bundle(processed, for_py_version, wheel_cache_dir)
  File "/home/ubuntu/.local/lib/python3.6/site-packages/virtualenv/seed/embed/wheels/acquire.py", line 57, in acquire_from_bundle
    copy2(str(bundle), str(bundled_wheel_file))
  File "/usr/lib/python3.6/shutil.py", line 263, in copy2
    copyfile(src, dst, follow_symlinks=follow_symlinks)
  File "/usr/lib/python3.6/shutil.py", line 121, in copyfile
    with open(dst, 'wb') as fdst:
PermissionError: [Errno 13] Permission denied: '/home/ubuntu/.local/share/virtualenv/seed-app-data/v1.0.1/3.7/wheels/pip-20.0.2-py2.py3-none-any.whl'

created virtual environment CPython3.7.9.final.0-64 in 257ms
  creator CPython3Posix(dest=/home/ubuntu/.virtualenvs/cosine, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/home/ubuntu/.local/share/virtualenv/seed-app-data/v1.0.1)
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
Setting project for cosine to /home/ubuntu/cosine_similarity
  

При этом виртуальная среда все еще создается при запуске :

 pip -V
  

Я получаю

 pip 20.1 from /home/ubuntu/.local/lib/python3.6/site-packages/pip (python 3.6)
  

Который связан с версией python по умолчанию на сервере, и поэтому я удалил python3.7, и при запуске python3.7 на моем терминале получил:

 
Command 'python3.7' not found, but can be installed with:

sudo apt install python3.7-minimal

  

Таким образом, исходя из предположения, что python3.7 не был установлен должным образом, я снова переустановил его, используя ppa от deadsnakes следующим образом:

 sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt install python3.7

  

Но, к сожалению, я все еще сталкиваюсь с той же ошибкой, я использую poetry поверх virtualenvironment и запускаю следующее: ( У меня есть poetry.файл блокировки)

 poetry install
  

Я получаю следующее сообщение об ошибке:

 [CalledProcessError]
Command '['/home/ubuntu/.cache/pypoetry/virtualenvs/cosine-similarity-SzdRNlpw-py3.7/bin/python', '-Im', 'ensurepip', '--upgrade', '--default-pip']' returned non-zero exit status 1.
  

Было бы здорово, если бы кто-нибудь мог объяснить, почему это происходит и как это решить, в свою очередь, спасибо.

[ПРАВИТЬ]

Добавление дополнительной информации при использовании -p python3.6 я не получаю никаких таких ошибок разрешения, и моя виртуальная среда создана успешно.

Для получения дополнительной информации я установил python3.8 в системе, используя вышеупомянутый ppa от deadsnakes *, а затем попытался создать виртуальную среду с помощью python3.8.

Команда mkvirutalenv -a . -p python3.8 venv2

Вывод в стандартном выводе выглядит следующим образом:

 created virtual environment CPython3.8.5.final.0-64 in 627ms
  creator CPython3Posix(dest=/home/ubuntu/.virtualenvs/venv2, clear=False, global=False)
  seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/home/ubuntu/.local/share/virtualenv/seed-app-data/v1.0.1)
  activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/venv2/bin/predeactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/venv2/bin/postdeactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/venv2/bin/preactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/venv2/bin/postactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/venv2/bin/get_env_details
Setting project for venv2 to /home/ubuntu/main_xyz/app
  

Комментарии:

1. @aaron : Вывод ls -l /home/ubuntu/.local/share/virtualenv/seed-app-data есть total 4 drwxrwxr-x 5 ubuntu ubuntu 4096 May 15 23:51 v1.0.1 , а для echo $USER есть ubuntu

2. ls: cannot access '/home/ubuntu/.local/share/virtualenv/seed-app-data/v1.0.1/3.7/wheels/pip-20.0.2-py2.py3-none-any.whl': No such file or directory , хм… Интересно, почему, хотя

3. ls -l /home/ubuntu/.local/share/virtualenv/seed-app-data/v1.0.1/3.7/wheels Шоу total 2056 -rw-r--r-- 1 root root 1489786 May 14 10:02 pip-20.1-py2.py3-none-any.whl -rw-r--r-- 1 root root 582683 May 14 10:02 setuptools-46.1.3-py3-none-any.whl -rw-r--r-- 1 root root 26502 May 14 10:02 wheel-0.34.2-py2.py3-none-any.whl

4. which python выходами /usr/bin/python и python3.7 --version выводами Python 3.7.9

5. Значит, ошибка есть только -p python3.7 ?

Ответ №1:

Прежде чем попробовать это решение, попробуйте запустить sudo su Затем повторите свое решение,… Если это работает нормально. Ещё

Часть 2 ======>

Проверьте свою версию python. python --version

Найти весь python в python ls /usr/bin/python*

Если python 3.7 является частью указанного пути, круто.

Задайте путь python по умолчанию alias python='/usr/bin/python3.7'

Повторно войдите в свой исходный код . ~/.bashrc

Подтвердите, что ваша версия python изменилась python —version

Затем установите виртуальную среду pip install virtualenv

Затем создайте виртуальную среду virtualenv venv

И активировать его source venv/bin/activate