Я также столкнулся с той же проблемой, и
remove.packages(c("ggplot2", "data.table"))
install.packages('Rcpp', dependencies = TRUE)
install.packages('ggplot2', dependencies = TRUE)
эти команды не сработали для меня. Я обнаружил, что он показывал предупреждающее сообщение о том, что он не мог перемещать временную установку C:\Users\User_name\Documents\R\win-library\3.3\abcd1234\Rcpp
в C:\Users\User_name\Documents\R\win-library\3.3\Rcpp
.
Я загрузил zip-файл Rcpp из указанной ссылки и разархивировал ее и скопировал ее внутри C:\Users\User_name\Documents\R\win-library\3.3
, а затем
library(Rcpp)
library(ggplot2)
. Мне не нужно было удалять R. Надеюсь, это поможет.
Ни один процесс не может изменить свой родительский процесс (или любую другую существующую среду процесса).
Однако вы можете создать новую среду, создав новую интерактивную оболочку с измененной средой.
Вы должны создать новую копию оболочки, которая использует обновленную среду, и имеет доступ к существующим stdin, stdout и stderr, и делает свой танец повторной инициализации.
Вам нужно сделать что-то вроде использовать subprocess.Popen для запуска /bin/bash -i
.
Таким образом, исходная оболочка запускает Python, который запускает новую оболочку. Да, у вас много процессов. Нет, это не так уж плохо, потому что исходная оболочка и Python на самом деле ничего не делают, кроме как ждать завершения работы подоболочки, чтобы они могли выйти также чисто.
Я бы использовал инструкцию bash eval и вывел скрипт python код оболочки
child.py:
#!/usr/bin/env python
print 'FOO="A_Value"'
parent.sh
#!/bin/bash
eval `./child.py`
Для любого дочернего процесса невозможно изменить среду родительского процесса. Лучшее, что вы можете сделать, это вывести инструкции оболочки в stdout, которые вы затем используете, или записать в файл, который вы используете в родительском.