«Превышен предел скорости API» при попытке установить локальный пакет R с помощью devtools::install()

#r #devtools #roxygen2

#r #devtools #roxygen2

Вопрос:

Начинающий разработчик пакета!

Я пытаюсь превратить некоторый код в локальный R-пакет в самый первый раз. Я создал пакет с помощью usethis::create_package() , добавил документацию с помощью devtools::document() .

Теперь, поиграв с ним некоторое время, я столкнулся со следующей ошибкой при попытке установить новейшую версию с помощью devtools::install() :

 Error: HTTP error 403.
  API rate limit exceeded for [my IP]. (But here's the good news: Authenticated requests get a higher rate limit. Check out the documentation for more details.)

  Rate limit remaining: 0/60
  Rate limit reset at: 2019-03-18 16:32:05 UTC

  To increase your GitHub API rate limit
  - Use `usethis::browse_github_pat()` to create a Personal Access Token.
  - Use `usethis::edit_r_environ()` and add the token as `GITHUB_PAT`.
  

Проблема все еще существует, если я использую devtools:install_local("my_folder_name") . Что меня действительно смущает, так это то, что я превышаю лимит скорости GitHub, пытаясь установить пакет, находящийся в локальной папке.

Я допустил ошибку при настройке пакета, или использование devtools::install() всегда связано с GitHub API? Могу ли я что-нибудь изменить, чтобы сохранить процесс установки моего пакета локальным и, таким образом, избежать проблемы с ограничением скорости?

Редактировать: Мой файл ОПИСАНИЯ ссылается на другие пакеты:

 Depends: 
    R (>= 3.4.3),
    dplyr
Imports:
    RMariaDB,
    dbplyr,
    DBI,
    reshape2,
    RColorBrewer,
    knitr,
    kableExtra,
    scales,
    magrittr,
    DT,
    formattable,
    testthat,
    ggplot2,
    rmarkdown
  

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

1. у вас есть зависимости? может быть, вы можете показать DESCRIPTION файл вашего пакета?

2. и у вас ничего нет под Remotes: , правильно?

3. Да, верно, в разделе Remotes ничего нет.

4. @RolandASc Большое спасибо за указатель, похоже, что поведение зависимостей по умолчанию install() на самом деле было проблемой!

Ответ №1:

Похоже, что по умолчанию devtools::install() проверяется наличие всех пакетов, перечисленных в качестве зависимостей в Depends , Imports и LinkingTo в DESCRIPTION файле (см. Объяснение dependencies = NA опции в справочном руководстве devtools здесь). Это также верно для remotes::install_local() , на который devtools::install_local() даны ссылки.

Решение этой проблемы заключается в явном отключении проверки зависимостей пакетов: если вы используете devtools::install("my_local_package", dependencies = FALSE) вместо этого, вам больше не нужно подключаться к api.github.com . Это имеет смысл, когда вы знаете, что у вас уже установлены необходимые зависимости, как в случае, когда вы повторно упаковываете свой собственный код.

(Также стоит отметить: параметры по умолчанию в devtools::install() требуют подключения к Интернету для установки любых пакетов, но, настроив dependencies = FALSE , также можно установить локальный пакет в автономном режиме!)