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

На OS X El Capitan я не могу обновить пакет python в зависимости от шести совместимых утилит NOR, могу ли я удалить шесть

Я пытаюсь использовать scrape, но у меня есть проблема.

from six.moves импортировать xmlrpc_client как xmlrpclib

ImportError: невозможно импортировать имя xmlrpc_client

Затем я попробовал pip install --upgrade six scrape, но:

  Found existing installation: six 1.4.1
    DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
Uninstalling six-1.4.1:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip/basecommand.py", line 211, in main
status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip/commands/install.py", line 311, in run
root=options.root_path,
  File "/Library/Python/2.7/site-packages/pip/req/req_set.py", line 640, in install
requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip/req/req_install.py", line 716, in uninstall
paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip/req/req_uninstall.py", line 125, in remove
renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip/utils/__init__.py", line 315, in renames
shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move
copy2(src, real_dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2
copystat(src, dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
os.chflags(dst, st.st_flags)

OSError: [Errno 1] Operation not permitted: '/var/folders/3h/r_2cxlvd1sjgzfgs4xckc__c0000gn/T/pip-5h86J8-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'
4b9b3361

Ответ 1

Я только обошел то, что, по моему мнению, была той же проблемой. Вы можете попробовать попробовать (sudo, если необходимо):

pip install scrape --upgrade --ignore-installed six

Github - это, в конечном счете, то, где я получил этот ответ (и есть еще несколько предложений, которые вы можете рассмотреть, если это не решит твоя проблема). Кажется, что это проблема Эль-Капитана.

Кроме того, это технически может быть дубликат. Но ответ, который возник в другом посте, заключался в установке вашего собственного Python вместо того, чтобы полагаться на по умолчанию osx Python, который кажется мне более трудоемким.

Ответ 2

Я не думаю, что это дубликат, но на самом деле этот вопрос обсуждался здесь в списке проблем репозитория pip GitHub.

ПРИМЕЧАНИЕ. В зависимости от того, какой пакет вы устанавливаете, вам может потребоваться изменить команду, указанную в решении. В моем случае ниже я пытался настроить virtualenv и virtualwrapper. Если вы пытаетесь установить aws-cli или любой другой пакет, просто вставьте его в script

Ядро проблемы связано с новым SIP от Apple, которое они поставляют с El Capitan. Подробнее ,

OS X 10.11 python сохраняет свою собственную копию из шести, которая не может быть отменена, из-за изменений, которые Apple сделала с их распределением python. 1.4.1 не является последним, 1.10.0 есть. Это также происходит на раннем этапе их пути импорта python, поэтому он обычно переопределяет более поздние версии, которые вы устанавливаете.

Я бы предложил использовать другой python. Python.org, или установлен через Homebrew, или Anaconda Python.

раскрывает, как проблемы с SIP были идентифицированы, адресованы и развиты после первоначального выпуска El Capitan. Хотя я нашел это увлекательным, вы потратите меньше времени, следуя инструкциям ниже, чем вы могли бы его прочитать, поэтому я бы рекомендовал проверить его после того, как вы закончите следующее...

Я столкнулся с такой же ошибкой при попытке обновить VirtualEnv и VirtualEnvWrapper. Было высказано несколько предложений по этой теме, но в итоге наиболее стабильной была

  • Использовать встроенную поддержку sudo OPTION для указания переменной среды HOME
$ man sudo

  -H   The -H (HOME) option option sets the HOME environment variable 
        to the home directory of the target user (root by default) as specified 
        HOME environment variable depends on sudoers(5) settings.  By default, 
        sudo will set HOME if env_reset or always_set_home are set, or if
        set_home is set and the -s option is specified on the command line.
  1. Использовать опционы pip для принудительного обновления и игнорировать любые ранее существующие пакеты.
$ pip install --help | grep upgrade

  -U, --upgrade   Upgrade all specified packages to the newest available 
        version. This process is recursive regardless of whether a dependency 
        is already satisfied.

[email protected]:~/mac_setup$ pip install --help | grep ignore-installed

  -I, --ignore-installed  Ignore the installed packages (reinstalling instead).

Сначала моя первоначальная попытка и ошибка:

$ sudo pip install virtualenv virtualenvwrapper

The directory '/Users/beejhuff/Library/Caches/pip/http' or its parent directory 
is not owned by the current user and the cache has been disabled. 
Please check the permissions and owner of that directory. If executing 
pip with sudo, you may want sudo -H flag.

The directory '/Users/beejhuff/Library/Caches/pip' or its parent directory 
is not owned by the current user and caching wheels has been disabled. 
check the permissions and owner of that directory. If executing pip with 
sudo, you may want sudo -H flag.

Collecting virtualenv
  Downloading virtualenv-15.0.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 335kB/s 
Collecting virtualenvwrapper
  Downloading virtualenvwrapper-4.7.1-py2.py3-none-any.whl
Collecting virtualenv-clone (from virtualenvwrapper)
  Downloading virtualenv-clone-0.2.6.tar.gz
Collecting stevedore (from virtualenvwrapper)
  Downloading stevedore-1.12.0-py2.py3-none-any.whl
Collecting pbr>=1.6 (from stevedore->virtualenvwrapper)
  Downloading pbr-1.8.1-py2.py3-none-any.whl (89kB)
    100% |████████████████████████████████| 92kB 362kB/s 
Collecting six>=1.9.0 (from stevedore->virtualenvwrapper)
  Downloading six-1.10.0-py2.py3-none-any.whl
Installing collected packages: virtualenv, virtualenv-clone, pbr, six, stevedore, virtualenvwrapper
  Running setup.py install for virtualenv-clone ... done
  Found existing installation: six 1.4.1
    DEPRECATION: Uninstalling a distutils installed project (six) has been deprecated and will be removed in a future version. This is due to the fact that uninstalling a distutils project will only partially uninstall the project.
    Uninstalling six-1.4.1:
Exception:
Traceback (most recent call last):
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.egg/pip/basecommand.py", line 209, in main
    status = self.run(options, args)
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.egg/pip/commands/install.py", line 317, in run
    prefix=options.prefix_path,
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.egg/pip/req/req_set.py", line 726, in install
    requirement.uninstall(auto_confirm=True)
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.egg/pip/req/req_install.py", line 746, in uninstall
    paths_to_remove.remove(auto_confirm)
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.egg/pip/req/req_uninstall.py", line 115, in remove
    renames(path, new_path)
  File "/Library/Python/2.7/site-packages/pip-8.1.0-py2.7.egg/pip/utils/__init__.py", line 267, in renames
    shutil.move(old, new)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move
    copy2(src, real_dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2
    copystat(src, dst)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
    os.chflags(dst, st.st_flags)
OSError: [Errno 1] Operation not permitted: '/tmp/pip-GQL8Gi-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six-1.4.1-py2.7.egg-info'

Решение

Требуется изменить мою команду установки тремя различными способами:

  • Мне пришлось добавить флаг -H в sudo
  • Мне пришлось добавить опцию --upgrade ПОСЛЕ имени пакета, который я обновлял (virtualenv)
  • Мне пришлось использовать флаг --ignore-installed и указать, что пакет six был тем, который нужно игнорировать.
  • * Примечание: общая команда $ sudo -H pip install <packagename> --upgrade --ignore-installed six - замените <packagename> на определенный пакет, который вам нужно установить `

Конечный рабочий пример

1st Upgrade virtualenv

$ sudo -H pip install virtualenv --upgrade --ignore-installed six

Password:

Collecting virtualenv
  Using cached virtualenv-15.0.0-py2.py3-none-any.whl
Collecting six
  Using cached six-1.10.0-py2.py3-none-any.whl
Installing collected packages: virtualenv, six
Successfully installed six-1.4.1 virtualenv-15.0.0

Обновление 2-го обновления virtualenvwrapper

$ sudo -H pip install virtualenvwrapper --upgrade --ignore-installed six

Password:

  Downloading virtualenvwrapper-4.7.1-py2.py3-none-any.whl
Collecting six
  Downloading six-1.10.0-py2.py3-none-any.whl
Collecting virtualenv (from virtualenvwrapper)
  Downloading virtualenv-15.0.0-py2.py3-none-any.whl (1.8MB)
    100% |████████████████████████████████| 1.8MB 751kB/s 
Collecting virtualenv-clone (from virtualenvwrapper)
  Downloading virtualenv-clone-0.2.6.tar.gz
Collecting stevedore (from virtualenvwrapper)
  Downloading stevedore-1.12.0-py2.py3-none-any.whl
Collecting pbr>=1.6 (from stevedore->virtualenvwrapper)
  Downloading pbr-1.8.1-py2.py3-none-any.whl (89kB)
    100% |████████████████████████████████| 92kB 417kB/s 
Installing collected packages: virtualenv, virtualenv-clone, pbr, six, stevedore, virtualenvwrapper
  Running setup.py install for virtualenv-clone ... done
Successfully installed pbr-1.8.1 six-1.4.1 stevedore-1.12.0 virtualenv-15.0.0 virtualenv-clone-0.2.6 virtualenvwrapper-4.7.1

Ответ 3

Оба предыдущих ответа не работают для меня. Наконец, я получил решение от GitHub, aws/aws-cli, как описано ниже.

В OS X, если вы видите ошибку относительно версии из шести, которые пришли с distutils в El Capitan, используйте опцию -ignore-installed:

$ sudo pip install awscli --ignore-installed six

Ответ 4

Это сработало бы!

sudo pip install awsebcli --upgrade --ignore-installed six