PythonEmbedInR is one of synapser's dependencies. It's an R package that requires C compilation.
Mac System Dependencies
- OpenSSL
- wget
Notes:
The easiest instruction I found was to use:
brew install wget
This command will install other wget
dependencies including openssl
. Don't forget to read the output of the brew
command and add openssl
to PATH
in ~/.bash_profile
.
Common errors and fixes:
Mac - libcryto.a not found
Repro
There are 2 ways to repro this problem. In Terminal:
- clone the repo
run the following commands:
cd PythonEmbedInR R CMD build . R CMD install PythonEmbedInR_0.0.0.tar.gz
error:
* installing to library ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library’ * installing *source* package ‘PythonEmbedInR’ ... ./configure: line 32: wget: command not found % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 19.6M 100 19.6M 0 0 19.5M 0 0:00:01 0:00:01 --:--:-- 19.5M Mac specific configuration cp: /usr/local/opt/openssl/lib/libcrypto.a: No such file or directory ERROR: configuration failed for package ‘PythonEmbedInR’ * removing ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/PythonEmbedInR’ * restoring previous ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/PythonEmbedInR’
In RStudio:
- Open PythonEmbedInR project
- Click
Install and Restart
Error:
==> R CMD INSTALL --no-multiarch --with-keep.source PythonEmbedInR * installing to library ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library’ * installing *source* package ‘PythonEmbedInR’ ... ./configure: line 32: wget: command not found % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0Failed to download https://www.python.org/ftp/python/3.5.3/Python-3.5.3.tgz 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 curl: (77) error setting certificate verify locations: CAfile: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/PythonEmbedInR/lib/python3.5/site-packages/pip/_vendor/requests/cacert.pem CApath: none ERROR: configuration failed for package ‘PythonEmbedInR’ * removing ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/PythonEmbedInR’ * restoring previous ‘/Library/Frameworks/R.framework/Versions/3.5/Resources/library/PythonEmbedInR’ Exited with status 1.
Fix
Install the Mac System Dependencies listed above.
Local Work Flow
This section captures the process of making changes to the code, write tests, build, install, and run the tests. This section does not include Git practices.
RStudio is great to writing R packages. However, the PythonEmbedInR package requires the code to be compiled in C. When building the package in RStudio, RStudio will drive CPU to 100% for a long period of time. This workflow is optimizing the tools by using syntax highlighting in RStudio for code changes, and Terminal for building (may use up to 35% CPU) and running tests.
Step 1: Add changes to the code base in RStudio (including writing tests)
Step 2: In Terminal:
cd PythonEmbedInR R CMD build . R CMD install PythonEmbedInR_0.0.0.tar.gz
Step 3: In R:
setwd(sprintf('%s/tests', getwd())) source('testthat.R')