刚开始接触Python的时候,网上找到的资料基本上上来就是介绍Python语言,很少有对开发环境进行讲解的,但如果在学习的过程中不断练习,这样效率会更高,所以特意将一个Python的开发环境Spyder自带的入门教程翻译出来,希望可以帮助到和我有同样困惑的你。

个人水平有限,会有翻译不到位的地方,欢迎批评指正!

Spyder是使用Python编程语言进行科学计算的集成开发环境。它有一个Editor(编辑器)用于编写代码,Console(控制台)可以评估代码并且在任何时候都可以看到运行结果,Variable Explorer(变量管理器)可以查看代码中定义的变量,还有其他的一些设备可以帮你高效地开发代码。

本教程由英国南安普顿大学的Hans Fangohr所写。



使用Spyder的第一步

这部分内容针对Python和Spyder的初学者,如果你觉得太简单,请继续学习下一部分内容。

执行一段代码

  • 我们将使用这段代码作为第一个例子:


    # Demo file for Spyder Tutorial # Hans Fangohr, University of Southampton, UK def hello():
    """Print "Hello World" and return None"""
    print("Hello World") # main program starts here hello()
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
  • 为了使用这段代码,请在Spyder的Editor(编辑窗)新建一个文件。将代码拷贝到文件中,并以hello.py文件名保存该文件。

  • 为了执行这段代码,从菜单中选择Run > Run(或者按F5键),如果有需要请确认Run settings的设置。如果这是第一次运行代码,你可能会看到如下形式的输出:

    In [1]: runfile('/Users/fangohr/Desktop/hello.py', wdir=r'/Users/fangohr/Desktop')
    Hello World In [2]:
    • 1
    • 2
    • 3
    • 4

    这说明你已经成功运行了第一个Python程序。

    注意:
    runfile旁边显示的具体路径取决于你刚刚保存文件的位置。

使用IPython Console

我们推荐您使用IPython Console,因为它比标准的Python Console的功能更多,并且建议您将它设置为默认控制台。

在执行代码的过程中到底发生了什么?

  • Python逐行读取Editor中的代码,并且它会自动忽略注释(即以#符号开头的行)。

  • 当遇到def关键字,Python知道在这里定义了一个函数。在def hello():之后的所有缩进行都是函数体。

    注意:这个函数对象仅仅只是在文件的这个位置被定义了,并没有被调用(或者执行)。

  • 当Python遇到从最左边的列开始写的命令(除了def…和其他一些关键字),它将马上执行这些命令。在hello.py文件中只在hello()的这一行才正真调用名为hello的函数。
    如果你在代码中注释掉或者删除hello()这一行,再次执行整个文件(按F5键或者选择 Run > Run),将不会打印任何内容,因为函数hello只被定义了,但没有被调用。

通过使用IPython Console,现在你应该知道Spyder中Editor窗口中的Python代码是如何执行的了。

如果你刚开始学习Python,现在最好返回到课本或者课程中练习更多的程序实例。

下一部分内容将详细介绍如何在IPython Console中执行Editor窗口中的代码段,然后更新Editor中的部分定义。这是一种更先进的技术,并且非常有用。(你可能对执行被分隔符隔开的代码块(也称为“cells”)也感兴趣,可以查看——功能快捷键)。

调用console中的函数

你一旦执行了hello.py文件,函数对象hello就被定义了,并且IPython console也知道了它的存在。因此,我们可以用如下方式在console中调用函数:

  • 在console中写入hello()(靠近In[?],?可以是任意正整数),然后按下Enter键。
    你应该发现hello()函数又被执行了一遍,Hello World又被打印了一次。在console中调 用函数和输出的形式应该如下:

    In [ ]: hello()
    Hello World
    • 1
    • 2
  • 你能发现它和执行整个代码之间的区别吗?
    当你执行整个代码时,Python会遍历整个文件,创建一个hello函数对象(覆盖之间的 对象),当到达hello()这一行就调用这个函数。
    如果我们在console中调用hello(),我们只是调用了之前执行整个hello.py文件在IPython console中定义的函数对象hello。
    这些概念在多次练习或者处理更大一些的代码实例后会更加清楚。在稍后的阶段中你可能还会返回此教程。

查看定义在console中的对象

  • Python提供了一个函数,它可以显示console中当前命名空间中所有已知的对象。它就是dir():当你在console中写入dir(),你将得到一个对象列表。现在忽略所有以下划线开始的。你能看见hello在列表中吗?

    注意:
    如果你得到了一个定义对象的长列表,那么Spyder可能已经为你做了一些方便的导入。 为了强调这一点,你需要:

    • 重启命名空间
    • 按F5键再次执行hello.py

    按上文介绍的步骤运行dir()。

  • 一旦一个对象在当前命名空间中可见(例如本例中的hello),我们可以使用help函数了解这个对象:在console提示区写入help(hello),你应该可以看到如下的输出:

    In [ ]: help(hello)
    Help on function hello in module __main__: hello()
    Print "Hello World" and return None
    • 1
    • 2
    • 3
    • 4
    • 5

    Python从哪获取的信息呢?其中一些信息(例如输入的参数个数和变量名称,这里我们没有输入参数)Python可以通过检查对象获得,另外一些信息源自于提供给函数对象hello的文档字符串。文档字符串就是紧挨着def hello():的下一行字符串。

    这些字符串很特殊,他们被称为docstring,是documentation strings的缩写。它们通常有好几行,并且被三个单引号( ’ ’ ’ )或者三个双引号(“ ” ” )封装起来。

  • Spyder开发环境同样提供了Help窗口,通常默认位于右上角。
    当光标在一个对象名字之上,按下CTRL+i(在MAC中按下CMD+i),我们可以获得同使用help(hello)一样的信息。

    这在console和Editor中都起作用。

更新对象

简单策略:重新执行整个程序

  • 在Editor窗口,修改函数hello使其输出Good Bye World而不是Hello World。

  • 按F5键执行整个程序,然后检查当前程序的输出:

    Good Bye World
    • 1

当你按下F5键时发生了什么?其实,Python遍历的整个hello.py文件,创建了一个新的函数对象hello(覆盖了之前的函数对象hello),然后执行了整个函数。

我们看一下细节

我们需要从一个定义清晰的情形开始。为了做到这一点,请你将函数hello()改回输出Hello World的情况,然后按F5键执行整个程序,检查输出应该是Hello World。

  • 在console命令提示区调用hello()函数。你会看到输出Hello World。

  • 现在在editor窗口改变函数使其打印Laters World,然后保存文件,但不要执行程序(不按F5键)。

  • 在console中调用hello()函数。你会看到输出是Hello World,如下:

    In [ ]: hello()
    Hello World
    • 1
    • 2

    为什么会这样?因为console中的hello函数对象是打印Hello World的旧的函数对象。因此,因此我们在editor中改变hello.py(用Laters World代替了Hello World)文件并不会影响之前在console中创建的对象。

有两种方法可以更新hello函数的版本:

  • 方法一:按F5键重新执行整个hello.py文件,这一操作会生成一个新的hello函数对象,并覆盖旧的。你会发现,当你按下F5键,在console命令提示区调用hello(),会输出新的文本Laters World。

  • 方法二:选中你改变的区域,在这个例子中是整个hello函数,从def hello():开始到print(“Laters World”)结束,然后选择Run > Run selections。
    这样就会更新console中的hello对象,而不用重新执行整个hello.py文件:

    In [ ]: def hello():
    ...: """Print "Hello World" and return None"""
    ...: print("Laters world")
    ...:
    • 1
    • 2
    • 3
    • 4

    如果现在写入hello(),我们会看到更新后的输出:

    In [ ]: hello()
    Laters world
    • 1
    • 2

在console中通过执行部分代码(上述例子中我们升级了函数对象hello)来升级一些对象的能,对于将来开发和调试更复杂的代码非常有用,也会节省在console中创建对象或数据的时间。例如,只修改我们真正想要调试的函数(或者类/对象),我们可以继续使用当前console中定义的数据和其他对象。


Python初学者的第一步

对于Python编程教学和学习,我们推荐使用IPython console而不是Python console,这在科学Python社区被认为是事实上的标准。

转换到IPython console

如果你已经有一个激活的IPython console,那么你可忽略这部分内容,只要用鼠标点击“IPython console”就使它可见了。

在console窗口中(默认位于右下角),在默认情况下用3个大于号最为提示,如>>>。这表示我们使用的是普通的Python console(Spyder新增了一些功能)。

然而我们更喜欢使用交互式的Python console(Interactive Python console),即IPython console。因此,选择Console > Open an IPython Console。

你可以看到在console窗口中产生了一个新的命令窗,IPython 的提示区是In [ 1 ]:

重置命名空间

命名空间(在任何给定时间内在console中定义的对象集合)在IPython中可以使用%reset命令清除。输入%reset然后按下enter键,用y确认:

In [1]: %reset

Once deleted, variables cannot be recovered. Proceed (y/[n])? y

In [2]:
  • 1
  • 2
  • 3
  • 4
  • 5

这就可以了。

我们对它进行更深一层的讨论,倘若你不感兴趣,也可以跳过这部分内容:使用%reset命令之后,在当前会话中只有少部分对象在命名空间中。我们可以使用dir()把他们都列出来:

In [2]: dir()
Out[2]:
['In',
'Out',
'__builtin__',
'__builtins__',
'__name__',
'_dh',
'_i',
'_i2',
'_ih',
'_ii',
'_iii',
'_oh',
'_sh',
'exit',
'get_ipython',
'help',
'quit']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

最后,如果你想在使用reset命令时跳过确认步骤,你可以使用%reset -f命令。

遵守PEP8规则

除了由Pyhton编程语言执行的语法之外,关于源代码的布局还有其他约定,特别是Style Guide for Python source code即大家所熟知的“PEP8”。遵循这一规则,尽可能写出相同风格的代码,这样,对于代码的作者和用户就更容易读和调试。

你需要修改Spyder的设置,如果触犯了PEP8的编码规则,就会自动警告。


参数设置

参数在哪配置

很多Spyder的行为都可以通过配置参数实现。而它们在菜单的位置取决于你是用的操作系统:

  • 在Windows和linux系统,使用Tools > Preferences

  • 在Mac OS中,使用Python/spyder > Preferences

设置PEP8规则检测警告

Preferences > Editor > Code Introspection/Analysis,然后勾选Style analysis(PEP8)。

激活sympy模式

通过Preferences > IPython console > Advanced Settings > Use symbolic math激活IPython的sympy模式,这个模式由sympy模块提供。Spyder中的这一模式提供了非常好的渲染过的数学上的输出(LaTeX风格),并汇报它完成了什么。在IPython console启动时自动导入一些sympy对象。

These commands were executed:
>>> from __future__ import division
>>> from sympy import *
>>> x, y, z, t = symbols('x y z t')
>>> k, m, n = symbols('k m n', integer=True)
>>> f, g, h = symbols('f g h', cls=Function)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

我们可以使用变量x,y:


方便的快捷方式

  • F5执行当前文件。

  • Tab键自动补全命令、函数名、变量名、Console(Python和IPython)和Editor中的方法名。这个特点也很有用,将来你可能会频繁地使用。现在你就可以尝试一下这一功能。假设你定义了一个变量:
    mylongvariablename = 42
    假设我们需要写代码计算mylongvariablename + 100,我们只需要输入 my 然后按Tab键。如果这个变量名是唯一的,在光标位置会自动补齐变量名,然后再继续输入 + 100。如果以字母my开头的变量名不是唯一的,按下Tab键之后会列出所有以my开头的变量名以供选择,之后可以使用上下键选择,也可以输入更多的字母匹配。

  • Ctrl+Enter执行当前cell(在菜单中Run > Run Cell)。Cell是以#%%开头的两行之间的代码。

  • Shift+Enter执行当前cell并将光标移到下一个cell(菜单中选择Run > Run cell and advance)。
    Cells可实现将大的文件或代码段以小单元执行。

  • Alt+把当前行向上移一行。如果很多行被选中,它们将被一起移动。 Alt+则是相对应的将某(些)行向下移。

  • Ctrl+鼠标左键 在一个函数/方法名上使用Ctrl+鼠标左键,打开一个新的editor窗口显示这个函数的定义。

  • Ctrl + +(Cmd + +在MacOS),将增大Editor窗口的字体,Ctrl + -则相反。在IPython窗口中也适用。
    Help或者python console窗口中的字体则通过Preferences > Help设置。
    Variable Explorer则没办法改变。

  • Ctrl + s(Cmd + s在MacOS上)保存当前Editor窗的文件。这还会在编辑器的左栏中强制更新各种警告三角形(否则它们默认2到3秒更新一次)。

  • Ctrl + s(Cmd + s在MacOS上)在IPython console窗将会把当前IPython会话以HTML文件保存,包括任何显示在命令行的参数。这样可以快速记录在会话中完成了什么。
    (但是不能将这个HTML 文件再次加载到会话中,如果你需要这样的功能,请查看 IPython Notebook。)

  • Ctrl + i(Cmd + i在MacOS上),当光标在一个对象上时使用,将在help窗口显示这个对象的文档。


执行设置

这些设置定义当我们选择Run > Run或者按了F5键Editor中的代码如何执行的。

默认情况下,当我们第一次执行一个文件时设置会出现。如果我们想改变设置,可以选择Run > Configure或者按F6找到它们。

对于console有3种方法可用,我们将讨论其中两种。我们假设在Editor中有如下形式的hello.py程序:

def hello(name):
"""Given an object 'name', print 'Hello ' and the object."""
print("Hello {}".format(name)) i = 42
if __name__ == "__main__":
hello(i)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在当前Python或者IPython console中执行

这是一个建议,通常也是一个很好的选择。

存在的对象I(执行代码之后)

选择Run > Configure下的Execute in current Python or IPython console这一设置,意味着:

1.当完全执行hello.py,我们可以和执行代码的console交互,并且我们可以很方便的使用IPython console做到这一点。

2.我们可以检查对象,也可以和执行代码创建的对象交互,例如i和hello()。

这种方法对于递增式的编程、测试和调试都非常有用:我们可以在console的命令提示区直接调用hello()函数,而不用执行整个hello.py文件。

存在的对象II(从代码执行前开始)

然而,在当前console中执行Editor中的代码也意味着:
3.其他定义与console会话中的其他(全局)对象对于执行的代码也是可见的。

这些对象的存在很容被遗忘,对于小量级的代码也不是必须的。这些对象可能源自于之前执行的代码,也可能来自console中的交互式工作,又或是源于一些导入(例如from pylab import *,Spyder也可能会自动导入)。

如果无意间依赖于这些对象,控制台命名空间中对象的可见性可能会导致代码出错。

实例如下:我们可以想象:

  • 运行hello.py文件,变量i在console中就是一个全局变量。

  • 编辑hello.py文件,删除i = 42这一行。

  • 再次执行hello.py文件。在这时调用hello(i)依然不会出错,即使现在的hello.py文件中已经没有定义i,因为console中之前已经存在变量i了。

这时,我们保存hello.py文件,本想着可以正确执行。但是,在新的(I)Python console会话中执行代码却导致错误,因为i并没有被定义。

这一问题的出现是因为代码使用了一个代码本身没有创建的对象(这里是i)。这一问题同样会影响模块导入:如果我们在IPython console命令提示区导入了pylab,它对于我们在IPython console会话中执行的代码就是可见的。

为了学习如何确认我们的代码并没有依赖于已经存在的对象,请看“如何双重检查你的代码是独立正确运行的”这部分内容。

在一个独立的Python console中运行

在Run > Configure下选择Execute in new dedicated Python console,在每次运行hello.py程序时都会重新开启一个新的Python console。它的主要优点在于,在这一模式下我们可以确定在执行代码时的console中不会有源自于之前调试和执行代码产生的对象。这样,每次执行editor中的代码,python console都是新的。

这一选择很安全,但是灵活性下降,并且不能使用IPython console。

如何双重检查你的代码是独立正确运行的

假设你已经选择 Execute in current Python or IPython console这一选项,你有两种方法可以确认你的代码时独立运行的(例如,代码不依赖于未定义的变量,未导入的模块和命令)。

1.从 Execute in current Python or IPython console换到 Execute in new dedicated Python console这一选项,然后再独立的Python console中运行Editor中的代码。

另一种方法你也可以选择。如果你想继续使用当前的IPython console,你可以

2.使用IPython console的%reset命令,这将会移除所有当前命名空间中的对象(如上述例子中的变量i),然后再执行Editor中的代码。

建议

我给初学者的建议是使用 Execute in current Python or IPython console,然后选择IPython console。

一旦你完成了一段代码,你都可以使用上述的两种方法确认你的代码是否独立运行。


其他需要注意的内容

多文件

如果在Editor中打开了多个文件,窗口顶部文件名对应的标签从左往右是以字母表顺序排列的。

在左侧的标签,有一个图标,当鼠标移到它上面会显示Browse tabs。在很多文件打开时,它可以使你能直接跳转到某一文件。

环境变量

环境变量可以在Python Console窗口中显示。单击Options图标(提示信息就是Options),然后选择Environment variables。

重置个性化设置

所有个性化设置都可以被重置,调用以–reset结尾的命令行。例如:spyder –reset。

Variable Explorer中的对象

在variable explorer中选择变量,鼠标右键,将会给出进一步分析它们的选项。

鼠标双击一个字典对象,将会在一个新的窗口中显示这个字典。

你同样可以显示和编辑数组、列表、数字和字符串。

说明文档的格式

如果你想为你正开发的代码添加说明(我们也推荐您为它编写说明),那就使用被称为reStructuredText的特殊格式。这种格式需要遵守叫做 Numpydoc standard的标准。

你遵照那些指导,就可以在Spyder中编写非常漂亮的说明。

例如,为了在Spyder的Help窗口中得到如下展示的average()函数:

你应该以如下形式编辑说明文字:

def average(a, b):
"""
Given two numbers a and b, return their average value. Parameters
----------
a : number
A number
b : number
Another number Returns
-------
res : number
The average of a and b, computed using 0.5*(a + b) Example
-------
>>> average(5, 10)
7.5 """ return (a + b) * 0.5
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

需要注意的是,这里使用了Parameters关键字,并且有下划线。a : number这一行告诉我们参数a是一个数。下一行是补充说明,我们可以给出更加详细的解释,这个变量代表什么,它的数据类型应该满足什么条件等等。

对于其他参数和返回值都可按这个形式编写。

通常情况下,像展示的那样给出例子是在好不过的。


调试

逐行执行代码

如果Python console处于激活状态,通过Debug > Debug菜单选项或者Ctrl + F5开始Python调试器,如果IPython console处于激活状态则开启了IPython调试器。之后,Editor窗口将会高亮将要执行的代码行,Variable Explorer窗口将显示当前执行代码中的变量。(它只显示变量的数值和数组类型,不会显示函数或者类对象)。

进入调试模式之后,使用调试工具栏中的Step按钮,你可以逐行执行代码:,或者使用快捷方式Ctrl + F10。

你可以查看某一个具体的函数是如何执行的,通过Step into按钮,或者使用快捷方式Ctrl + F11。

从某一函数中跳出并执行下一行程序则使用Step return按钮,或者使用快捷方式Ctrl + F12 。

如果你希望在某一具体位置检查你的程序,则需要在你想要暂停的某一行插入breakpoint,通过按下F12即可实现,你会发现在这一行的旁边会有一个红色的点。这时当你按下Continue按钮,程序执行到这一行就会暂停。

注意:
你同样可以在console命令窗中使用如下命令控制调试进程:
n 移动到下一行;
s 进入当前语句,如果是一个函数则进入这个函数;
r 执行完当前函数的所有语句并从该函数返回;
p 打印变量的值,例如p x将打印变量x的值。

在调试器的命令行中,你也可以干煸变量的值。例如,为了在IPython调试器命令汉中改变变量x的值,则使用ipdb > x = 42,调试器就会用绑定了42的x。你可以调用这个函数做其他的事。尝试如下例子:

def demo(x):
for i in range(5):
print("i={}, x={}".format(i, x))
x = x + 1 demo(0)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如果我们执行它(Run > Run),我们可以看到如下输出:

i=0, x=0
i=1, x=1
i=2, x=2
i=3, x=3
i=4, x=4
  • 1
  • 2
  • 3
  • 4
  • 5

现在使用调试器(Debug > Debug)执行代码,先一直使用Step按钮,当高亮的行到达demo(0)时使用Step into按钮查看这个函数。继续使用Step按钮执行剩下的代码行。之后,在调试器命令窗用命令x=10改变x的值。你可以看到在Variable Explore窗中x的值也改变了。你同样可以看到打印出来的作为函数demo()的一部分的x值的变化。

逐行执行代码、查看变量的变化、手动修改变量的值,这一调试技能对于理解代码是如何执行的非常有用。

为了离开调试模式,你可以在命令窗使用exit命令或者在菜单中选择Debug > Debugging Control > Exit。

当IPython中出现了一个异常如何开启调试模式

在IPython console中,当一个异常产生之后,我们可以调用%debug:这就可以开启IPython的调试模式,它可以监视异常发生处的变量。这一操作比在代码中添加print函数再执行代码的调试效率要高得多。

如果你使用了这一操作,你可能还会用到up命令(在调试窗中输入d)和down命令(在调试窗中输入d),这两个命令改变监视堆栈上和下的方向(堆栈中往上表示当前函数已经调用的函数;往下与之相反)。


绘图

用IPython console绘图

假设我们使用的IPython console的版本大于等于1.0.0,我们就可以决定matplotlib/pylab产生的图表用哪种方式显示:

1.在命令行中显示,例如显示在IPython console中;

2.显示在一个新窗口中。

选项1可以很方便的保存交互会话的内容(在有用的快捷方式一节中介绍了如何使用快捷方式将IPython console的内容保存为html文件)。

选项2则允许一些交互式的操作,比如放大图表,操作图表,通过窗口包含的菜单将图表保存成各种格式。

在IPython console中显示图表的命令是:

In [3]: %matplotlib inline
  • 1

Spyder的参数配置可以个性化设置默认行为(通过Preferences > IPython Console > Graphics > Activate Support转换到命令行中绘图)。

如下两行命令可以快速生成一个图表,你可以试一下:

In [5]: import pylab
In [6]: pylab.plot(range(10), 'o')
  • 1
  • 2

用Python console绘图

如果我们使用Python console,所有的图表都会显示在新窗口中(没有办法将它显示在Python console的命令行中)。

如下是一个简单的例子,你可以测试一下:

>>> import pylab
>>> pylab.plot(range(10), 'o')
  • 1
  • 2

如果你在专用的控制台中执行代码,你需要在代码中使用matplotlib或者pylab的show()命令使图表显示出来,如:pylab.show()。

注意,show()命令将绑定到已经出现的新窗口上,也就是说你需要关掉那个窗口之后Spyder才会接受其他的命令或响应交互。如果你没看到新的窗口,检查一下它是否显示在Spyder窗口的后面,或者它被隐藏了。


历史说明

这一教程是基于Hans Fangohr的说明编写的,这在南安普顿大学的下一代计算建模博士培训中心用于教授Python的计算模型给本科生工程师、研究生和博士生。

Spyder——科学的Python开发环境的更多相关文章

  1. Python----Anaconda + PyCharm + Python 开发环境搭建(使用pip,安装selenium,使用IDLE)

    1.Python开发中会用到的工具下载地址 FireBug插件安装地址:https://addons.mozilla.org/en-US/firefox/addon/firebug/ FirePath ...

  2. 第一篇博客 Python开发环境配置

    本文主要介绍Windows7环境下安装并配置Anaconda+VSCode作为Python开发环境. 目录 Anaconda与包管理配 Anaconda安装 添加环境变量 Anaconda安装错误及解 ...

  3. Python学习1:使用Aptana构建Python开发环境

    使用Aptana构建Python开发环境 下载Aptana: http://www.aptana.com/products/studio3/download http://www.newasp.net ...

  4. Anaconda配置Python开发环境

    Anaconda介绍 Anaconda 是在 linux.windows 和 mac os x 上执行 Python/R 数据分析和机器学习的最简单的方式并且它是开源的.它在全球拥有超过 1, 100 ...

  5. Visual Studio 2017进行Python开发环境的搭建,使用VS2017进行python代码的编写。

    Visual Studio 2017进行Python开发环境的搭建,使用VS2017进行python代码的编写. 前提:已经安装过VS2017且进行过配置. 第一部分: Python环境的搭建: 建议 ...

  6. Python开发篇——构建虚拟Python开发环境(Conda+Poetry)

    前言 之前虽略有提及Python,但是没有实际地写点料.惭愧,惭愧,所以这次先起个头,讲讲如何构建虚拟Python开发环境.相信之前看过我博客的人可能会想:博主不会又要聊聊Docker吧?放心,不会. ...

  7. 【Python】【Basic】MacOS上搭建Python开发环境

    1. Python3 1.1. 下载地址:https://www.python.org/downloads/mac-osx/ 1.1.1. PKG包安装: 没啥可说的,点点点,下一步而已,不用手动配置 ...

  8. python开发环境搭建

    虽然网上有很多python开发环境搭建的文章,不过重复造轮子还是要的,记录一下过程,方便自己以后配置,也方便正在学习中的同事配置他们的环境. 1.准备好安装包 1)上python官网下载python运 ...

  9. Python黑帽编程1.2 基于VS Code构建Python开发环境

    Python黑帽编程1.2  基于VS Code构建Python开发环境 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Atta ...

随机推荐

  1. spring mvc +@Valid +@RequestBody 来做参数校验返回400,并且不显示具体message 如何解决

    参考文档: https://www.oschina.net/question/115867_2282711   谢谢原作者

  2. Oracle 11g 静默安装过程(centos7)

    开启机器,本次实例分配的ip是:192.168.3.197(Xshell ssh连接) 2 安装unzip 工具.vim编辑器(个人习惯,vi也可以) 3 在/etc/hosts文件中添加本机IP跟主 ...

  3. PEAKS|NovoHMM|Nover|DeepNovo|MAYUPercolator|UniprotKB|Swiss-prot|Mascot|SEQUEST|X!Tandem|pFind|MaxQuant|Msconvert|PEPMASS|LC|

    质谱仪: 质谱分析法是先将大分子电离为带电粒子,按质核比分离,由质谱仪识别电信号得到质谱图. Top-down直接得到结果是蛋白. Bottom down使用shutgun方法得到结果是肽段. 由蛋白 ...

  4. 吴裕雄--天生自然python学习笔记:Python MySQL - mysql-connector 驱动

    本章节我们为大家介绍使用 mysql-connector 来连接使用 MySQL, mysql-connector 是 MySQL 官方提供的驱动器. 我们可以使用 pip 命令来安装 mysql-c ...

  5. jquery mobile AJAX特性的陷阱

    简单情况是 MVC 重定向,URL不变 试了N种方式,跳来跳去,无解,服务端跳,写JS跳,生成跳转中间页跳.失败 后来一看,明明已经跳到新页了,样式什么还是原页的,有点火大了. 出去溜一圈,喝杯水,和 ...

  6. 使用内网映射工具Holer将本地的Web应用映射到公网上访问

    Holer exposes local servers behind NATs and firewalls to the public internet over secure tunnels. Su ...

  7. 如何快速找出Linux中的重复文件

    md5sum | sort | uniq -w32 --all-repeated=separate [1]find -not -empty -type f -printf “%s\n” :find是查 ...

  8. 点击一个ul的五个li元素,分别弹出他们的序号,怎么做?

    方法1 : for(var i=0; i<oLis.length; i++){ oLis[i].onclick = (function(j){ return function(){ alert( ...

  9. Python---2文本编辑器

    1.介绍 在Python的交互式命令行写程序,好处是一下就能得到结果,坏处是没法保存,下次还想运行的时候,还得再敲一遍. 所以,实际开发的时候,我们总是使用一个文本编辑器来写代码,写完了,保存为一个文 ...

  10. python返回值进行unpack

    最近在写yolov3,因为yolov3的多输出性质,所以我打算写适配多输出的工具函数,在numpy中可以在一个array中包含多个不同维度的array,但在tensorflow中一个tensor只能保 ...