我更喜欢Python的语法糖。和标准库函数。
但是我不喜欢的一个功能;是隐式键入。
是否有带有显式类型的Python发行版?哪些仍然与例如:PyPi上的软件包兼容?
[我正在研究RPython]
我已经在OSX 10.9.4附带的2.7.5旁边安装了python 2.7.8.
现在我怎么能指向rPythonpython 2.7.8?
我已.bash_profile按如下方式修改了OSX ,以指向更新的python安装.
export PATH=/usr/local/Cellar/python/2.7.8/bin/:$PATH:usr/local/bin:
Run Code Online (Sandbox Code Playgroud)
现在,当我从终端运行python时,它正确运行较新的版本
mba:~ tommy$ which python
/usr/local/Cellar/python/2.7.8/bin//python
Run Code Online (Sandbox Code Playgroud)
但是,rPython仍然看到2.7.5.
> library(rPython)
Loading required package: RJSONIO
> python.exec("import sys; print(sys.version)")
2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)]
Run Code Online (Sandbox Code Playgroud)
它看起来.bash_profile根本不被R使用......所以我试图修改R内的PATH但是仍然没有运气.
> Sys.getenv("PATH")
[1] "/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin"
> Sys.setenv(PATH = "usr/local/Cellar/python/2.7.8/bin")
> library(rPython)
Loading required package: RJSONIO
> python.exec("import sys; print(sys.version)")
2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 …Run Code Online (Sandbox Code Playgroud) 我的问题是:
如何将python版本更改为anaconda 3.5,并且可以使用已在RStudio中安装在anaconda中的模块.
我正在使用RStudio版本0.99.891
R版本3.2.3(2015-12-10)
平台:x86_64-apple-darwin13.4.0(64位)
运行于:OS X 10.11.3(El Capitan)
我已经安装了Anaconda3,将python 3.5设置为默认的python版本.
$ python
Python 3.5.1 | Anaconda custom(x86_64)| (默认,2015年12月7日,11:24:55)
但是,在RStudio中,
system("python --version")
Python 2.7.10
我尝试通过以下方法更改它:
Sys.setenv(PATH = paste("/ Users/UserName/anaconda3/bin",Sys.getenv("PATH"),sep =":"))
system("python --version")
Python 3.5.1 :: Anaconda定制(x86_64)
看起来不错,但事实并非如此.
python.exec("import os")
python.exec("import inspect")
python.exec("inspect.getfile(os)")
python.exec("print(inspect.getfile(os))")
/System /图书馆/框架/ Python.framework /版本/ 2.7/lib中/ python2.7/os.pycpython.exec("import pandas as pd")
python.exec中的错误("import pandas"):没有名为pandas的模块
谢谢.
我对如何从 Rstudio 运行 python 脚本有疑问?
我最初的想法是从 GitHub 存储库获取 python 脚本,然后在 R 中运行它,我通过使用 RCurl 包获取 python 代码script <- getURL(URL, ssl.verifypeer = FALSE),我被困在如何运行 Python 代码而不将脚本存储为工作目录中的文件上,即在Rstudio中运行上面目录下的R变量脚本。
我确实知道R 中python.load()的_rPython_包可以帮助运行 Python 脚本,但它需要 .py 文件作为第一个参数。我想找到一种不将Python脚本存储为文件的方法。
如果您对此问题有任何想法,请提前致谢。
PyPy 是否在编译时进行静态类型检查以在编译时捕获类型错误?如果没有,HM 类型推断之类的东西是否有助于在编译时捕获这些错误?
在构建rPython包时,我在R中遇到错误,特别是链接libpython2.7的部分:
gcc -std=gnu99 -I/foo/bar/R-3.1.1/lib64/R/include -DNDEBUG -I/usr/local/include \
-I/foo/bar/Python-2.7.6/include/python2.7 -I/foo/bar/Python-2.7.6/include/python2.7 \
-D PYTHONLIBFILE=libpython2.7.so -fpic -g -O2 -c pycall.c -o pycall.o
gcc -std=gnu99 -shared -L/usr/local/lib64 -o rPython.so pycall.o \
-lpthread -ldl -lutil -lm -lpython2.7 -Xlinker -export-dynamic
/usr/bin/ld: error: cannot find -lpython2.7
Run Code Online (Sandbox Code Playgroud)
问题似乎是,当R(或rPython)理解使用我的Python安装编译哪个-I规则时,它没有添加相应的链接器标志.我不知道为什么,假设这是一个错误.
我尝试在windows下安装rPython install.packages("rPython").但是我收到包不存在的错误.
Warning in install.packages :
package ‘rPython’ is not available (for R version 3.2.5)
Run Code Online (Sandbox Code Playgroud)
在包的安装文档中,我只能找到:
WINDOWS SYSTEMS
===============
On a Windows system, the package can only be installed from source at this time. Details to come.
Run Code Online (Sandbox Code Playgroud)
在R中使用Python有一种解决方法吗?
我正在使用RStudio并且一直在尝试使用rPython包为我做一些电子邮件处理.这涉及解压缩一些电子邮件附件,因此我需要使用比2.7更新的Python版本.
我在ubuntu上,所以我在bash脚本中设置了环境变量,我可以看到它有效:
庆典
alias python=python3
export RPYTHON_PYTHON_VERSION=3
Run Code Online (Sandbox Code Playgroud)
命令行
echo $RPYTHON_PYTHON_VERSION
3
Run Code Online (Sandbox Code Playgroud)
然而,当我在RStudio中安装rPython时,它说:
将包安装到'/home/richardc/R/x86_64-pc-linux-gnu-library/3.1'(未指定'lib')尝试URL'http://cran.rstudio.com/src/contrib/rPython_0 . 0-5.tar.gz '内容类型'应用程序/ x-gzip'长度37109字节(36 Kb)
下载了36 Kb
因此,尽管python --version返回3.4并设置环境变量,它默认为2.7
我希望我有一些直截了当的东西.
我在Python中创建了一个简单的程序来生成一个包含5个数字的随机字符串:
import random
numcount = 5
fstring = ""
for num in range(19): #strings are 19 characters long
if random.randint(0, 1) == 1:
x = random.randint(1, 26)
x += 96
fstring += (chr(x).upper())
elif not numcount == 0:
x = random.randint(0, 9)
fstring += str(x)
numcount -= 1
print(fstring)
Run Code Online (Sandbox Code Playgroud)
不太难,对吧?除了一个令人难以置信的奇怪的事情:它返回的字符串是随机长度.我已经多次运行代码了,这里有一些我的结果:
>>> ================================ RESTART ================================
>>>
VQZ99HA5DER0CES4
>>> ================================ RESTART ================================
>>>
05PS0T86LOZS
>>> ================================ RESTART ================================
>>>
E2QX8296XK
>>> ================================ RESTART ================================
>>>
M5X9K457QDNBPX
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚发生了什么......有人能指出我正确的方向吗?