感觉Python开发环境的搭建,有点烦。比起VC、VS、MyEclipse、Matlab,不知道烦到哪儿去了。
Win+MyEclipse+pyDev
我是现在windows下学的Python2。用的工具是MyEclipse
注意,源文件目录下一定不要有中文!!!
假定我在windows下面,用myeclipse进行python开发。
1. 安装myeclipse。已经完成。
2. 下载安装Python。官网。我目前用的python2.7.13版本。windows。x86。一个exe,一路next就好。(写到这里,我发现原来这是变宽字体…)
3. 计算机的环境变量 --> 我是对系统变量的path,增加了C:\Python27这个目录(这个目录下有python.exe)。
此时可以去CMD下检查是否OK。
4. 下载安装Pydev For eclipse。SourceForge上有。是个压缩包。
因为我用的myeclipse2013,所以,
进入C:\Users\qcy\AppData\Local\MyEclipse Professional (这是我myeclipse的安装路径)
把第4步下载的压缩包,解压,把feature和plugin与myclipse下的两个文件夹合并。
5. 打开myeclipse,window--preferences--pyDev-- interpret - python -- 然后我点了auto Config,它自动帮我把C:\Python27\python.exe加入解释器了。
然后写第一个程序:Hello,world!
粉粉的桌面。据说,这个颜色(255,145,177)可以有效缓解人的焦虑和紧张。

Win+Anaconda+Spyder+PyCharm
面向过程部分的语法学完了,就希望能用借助Python来进行更高级一点的科学计算方面的内容了。(e.g. 类似于matlab的向量化操作)
因此,我升级了工具。目前为止,怕嫌麻烦,我还是喜欢大而全的下一步下一步地安装。一劳永逸。毕竟名字里有个“逸”。
Anaconda Spyder
在windows下,我下载了Anaconda3-4.3.0.1-Windows-x86_64,其Python的版本是3.7。
安装完成以后,找到Ananconda的navigator,相当于是一个welcome的界面。可以启动一些exe。e.g. spyder、ipython、notebook(Jupyter)。
从此,可以在spyder里面写代码,运行了。spyder和matlab长得比较像,用法感觉也还可以。
只是目前为止,单步调试我还是觉得不如matlab智能。可能是我没有学会吧。
利用pip安装python的别的包。
突然需要一个ta-lib的包。但是我本地并没有这个包。
在这个网站上,可以下载很多Python包。
在anaconda的prompt下,输入如下命令,就可以安装了。

另外,还需要装一个ffn的包。
在anaconda的spyder的ipython(右下角)中,输入pip install ffn。就可以安装ffn了。(好像是。如果不行的话,就到anaconda的prompt下去安装。)
在Anaconda Prompt中输入pip list,可以看到已经安装好的包。
如何打开Jupyter?
打开anaconda的prompt,cd切换到ipynb文件目录下,然后输入jupyter notebook,就可以打开了,并且把工作路径设置到了刚刚进来的目录下。
e.g. D:\>jupyter notebook
PyCharm
进一步,我希望用一个对于代码编辑更方便的工具,找到了PyCharm。只安装了一个社区版pycharm-community-2016.3.2。毕竟专业版要再去找序列号。麻烦了。
PyCharm,可以设定使用Eclipse的快捷键。
Eclipse中是content assist,PyCharm中是complement。
在pycharm中写了代码以后,需要
运行run。
Run -- Edit Conf -- 新增+一个run conf --> 选择script。
暂时,又可以支持我再用一段时间。
Win + VS + Cython
距离上一次的安装过了差不多半个月。又有要补充的东西了。
我现在面临着python的for循环特别慢的问题。尽管我已经很努力地在写向量化运算了。可是有的时候还是不能避免for循环。
为了让它运行得稍微快一点,我应该用一个可以编译它的工具。
不像matlab,可以直接用coder generator傻瓜式地编译。python的编译,本来在linux操作系统下,应该也不难,但是在windows下真的很麻烦!!
搞了一下午加一晚上,终于似乎好像可以了。因此在这里总结一下。
下载必须的文件
首先,还是要下载一些必须的文件。
1. 把python编译成c的编译器。因为我已经有Visual Studio了,因此可以直接用VS来编译了。
2. Cython插件。因为我当时装的是Anaconda,在anaconda的prompt里面输入pip list,就可以发现我已经装好了Cython了的,所以也不需要安装了。
警告!我之前安装过VS2015的社区版。但是觉得不好用就卸载了。电脑里就还剩VS2012。但是我觉得应该是VS的编译器的版本,在系统环境中仍然是VS2015的编译器,所以在后面编译py文件的时候,始终提示我说找不到编译器。估计是VS卸载的时候,没卸载彻底。另外我也没有找到系统中VS编译器版本的配置文件。于是只好重新安装了一下VS2015。就是这个问题,折腾了一个下午加一个晚上。这也是我坚持不放弃windows系统所带来的所谓的“恶果”。
另外,我之前在系统环境变量里面配置了一个2.7版本的python。现在把它换成了anaconda的python。
定义需要编译的函数和setup文件
1. 和matlab类似,为了编译自己写的一段python函数,我们也需要自定义一些函数。但此时需要用Cython所能理解的格式去写。
2. 为了把函数编译成功,还需另外写一个编译配置文件,名叫setup。
这里举一些例子。
1. 经典案例。hello world。
2. 关于
Fibonacci数列的一道题。
案例1 Hello
1. 创建
一个pyx文件。
hello.pyx
def say_hello():
print "Hello World!"
2. 创建一个
setup文件。
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 4 15:59:29 2017
@author: qcy
"""
from distutils.core import setup
from Cython.Build import cythonize
setup(name = 'Hello world app',
ext_modules = cythonize("hello.pyx"))
3. 控制台,把pyx编译成c文件。进入setup所在路径。
python setup.py build
在当前目录下生成了一个build文件夹和hello.c文件。
4. 安装。
python setup.py install
它就把刚刚编译好的一些东西写到C盘anaconda下面的某个文件夹里面了。(还写了一个fib的文件,那是第二个例子。我也不知道为什么一起就写起进去了)。
在我这种配置环境下,刚刚编译好的这个module被安装到了C:\ProgramData\Anaconda3\Lib\site-packages这里面。
关于指定安装路径,我在后文会提到。
5. 测试。创建一个
main1.py文件。
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 4 20:38:03 2017
@author: qcy
"""
import hello
hello.say_hello()
这和java一开始的感觉一样。都是敲命令。先是javac,然后是java…
第一个例子hello到此结束。
案例2 关于fibonacci数列的一道题
1.
fib.pyx文件。
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 4 15:57:51 2017
@author: qcy
"""
def fib(n):
cdef int a = 0
cdef int b = 1
while b
2.
setup.py文件。
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 4 15:59:29 2017
@author: qcy
"""
from distutils.core import setup
from Cython.Build import cythonize
setup(name = 'Hello world app',
ext_modules = cythonize("fib.pyx"))
3.
测试main文件。
# -*- coding: utf-8 -*-
"""
Created on Sat Mar 4 20:38:03 2017
@author: qcy
"""
import fib
fib.fib(10000)
第二个案例到此结束。
更简单的安装方式
打开cmd,进入setup.py所在路径。
输入以下非常精简的命令。
python setup.py build_ext --inplace
回车以后,你就会发现,有一个.pyd的文件自动就出现在你的眼前了…
在Jupyter Notebook中编译
在anaconda的jupyter notebook中,也可以直接编译+运行的。
1. 打开anaconda prompt
2. 开启jupyter notebook
3. 导入一些文件
4. 直接开始写
%load_ext Cython
%%cython
cdef int a=0
print(a)
%%cython
def fib(long n):
cdef long a = 0, b = 1, i
for i in range(n):
a, b = a + b, a
return a
for i in range(10):
print(fib(i))
这也是可以的。
PLUS:在notebook中,鼠标没有选中任何东西的情况下,按B,就是新增加一栏。按Ctrl+Enter,就是执行本小节。
把py编译、安装到指定路径
指定安装路径,指定保存安装日志
打开cmd,进入setup.py所在的目录,输入python setup.py install --prefix=路径 --record log文件名
e.g.
F:\source_files\quant\PyCharm\qcy_minutes\test_cython>python setup.py install --prefix=F:\source_files\quant\PyCharm\qcy_minutes\test_cython --record log
在目标路径下,就会多出几个文件。
log文件,里面是这样的内容。安装日志吧。
F:\source_files\quant\PyCharm\qcy_minutes\test_cython\Lib\site-packages\fib.cp36-win_amd64.pyd
F:\source_files\quant\PyCharm\qcy_minutes\test_cython\Lib\site-packages\fib_app-0.0.0-py3.6.egg-info
从此,就可以通过import自定义的module,导入py文件,调用里面的function运行了。
但是,此时的导入不能直接import。因为import只会搜索python默认的一些搜索路径。
这时需要指定刚刚装好的那个module所在的位置。在windows下,编译好的python将以pyd的文件存放。
我这里是存在了F:\source_files\quant\PyCharm\qcy_minutes\test_cython\build\lib.win-amd64-3.6这个路径下。
导入。(
注意:路径如果是"\"分割,就是两个“\\”,转义字符嘛。否则,就写一个“/”)
import sys
sys.path.append('F:\\source_files\\quant\PyCharm\\qcy_minutes\\test_cython\\build\\lib.win-amd64-3.6')
print (sys.path)
import fib as fibo
从此,就可以使用了。
又来一个新的问题(重新编译时出错,无法删除文件)
但是,一旦import以后,此时我想删掉刚刚安装好的模块。
或者,重新编译,也报错。
目前我知道的办法:
1. 关掉spyder(因为我在spyder里面import进去了)。
2. restart python的kernel。
我选择了第二种。 -_-! 这也挺麻烦的!
以后还应该学习配置python的虚拟环境。
学无止境……