Spyder IDE: 需要按'run script'两次才能成功执行Python脚本
Spyder IDE: Need to press 'run script' twice to successfully execute Python script
我目前正在 Python(Spyder IDE、Python 3.5、Anaconda 4.0.0)中处理图像处理脚本。当我第一次打开 IDE 时,我只需按一次 'run script' 脚本就会执行。但在那之后,我必须按 'run script' 两次,有时甚至三次,它才能执行。在互联网上搜索,似乎问题与使用 matplotlib
和 pyplot
有关。这主要是一个问题,因为每次测试我都会花 5 分钟来执行我的脚本。我的代码包含在下面。我决定在这里询问这个问题,看看是否有人有建议或想法让我的脚本在第一次按下时执行。
编辑:每当我重新启动内核(启动一个新的控制台)时,我都能在第一次按下时获得脚本 运行。
import numpy as np
import matplotlib.pyplot as plt
from skimage.color import rgb2gray
from skimage import data, img_as_float
from skimage.filters import gaussian
from skimage.segmentation import active_contour
from skimage import io
from skimage import exposure
import scipy
scipy_version = list(map(int, scipy.__version__.split('.')))
new_scipy = scipy_version[0] > 0 or \
(scipy_version[0] == 0 and scipy_version[1] >= 14)
'''
img = data.astronaut()
img = rgb2gray(img)
'''
openLocation = "file location here"
img = io.imread(openLocation)
#img = rgb2gray(img)
s = np.linspace(0, 2*np.pi, 600)
x = 400 + 300*np.cos(s)
y = 550 + 280*np.sin(s)
init = np.array([x, y]).T
if not new_scipy:
print('You are using an old version of scipy. '
'Active contours is implemented for scipy versions '
'0.14.0 and above.')
if new_scipy:
snake = active_contour(img, init, alpha=0.01, beta=0.01, w_line = 5, w_edge = 0, gamma=0.01, bc = 'periodic')
fig = plt.figure(figsize=(7, 7))
ax = fig.add_subplot(111)
plt.gray()
ax.imshow(img)
ax.plot(init[:, 0], init[:, 1], '--r', lw=3)
ax.plot(snake[:, 0], snake[:, 1], '-b', lw=3)
ax.set_xticks([]), ax.set_yticks([])
ax.axis([0, img.shape[1], img.shape[0], 0])
我认为您的问题与 this 有关,它是 spyder
中的一个错误。到目前为止,它提供了一个部分解决方案,即使用不同的 Matplotlib 后端。您可以在以下位置更改它:
Preferences > Console > External modules > Matplotlib
从默认 (Qt4Agg) 到 TkAgg(Windows 上唯一可用的其他)。
您可以尝试的另一件事是更新 spyder
然后尝试 运行 您的脚本。
我目前正在 Python(Spyder IDE、Python 3.5、Anaconda 4.0.0)中处理图像处理脚本。当我第一次打开 IDE 时,我只需按一次 'run script' 脚本就会执行。但在那之后,我必须按 'run script' 两次,有时甚至三次,它才能执行。在互联网上搜索,似乎问题与使用 matplotlib
和 pyplot
有关。这主要是一个问题,因为每次测试我都会花 5 分钟来执行我的脚本。我的代码包含在下面。我决定在这里询问这个问题,看看是否有人有建议或想法让我的脚本在第一次按下时执行。
编辑:每当我重新启动内核(启动一个新的控制台)时,我都能在第一次按下时获得脚本 运行。
import numpy as np
import matplotlib.pyplot as plt
from skimage.color import rgb2gray
from skimage import data, img_as_float
from skimage.filters import gaussian
from skimage.segmentation import active_contour
from skimage import io
from skimage import exposure
import scipy
scipy_version = list(map(int, scipy.__version__.split('.')))
new_scipy = scipy_version[0] > 0 or \
(scipy_version[0] == 0 and scipy_version[1] >= 14)
'''
img = data.astronaut()
img = rgb2gray(img)
'''
openLocation = "file location here"
img = io.imread(openLocation)
#img = rgb2gray(img)
s = np.linspace(0, 2*np.pi, 600)
x = 400 + 300*np.cos(s)
y = 550 + 280*np.sin(s)
init = np.array([x, y]).T
if not new_scipy:
print('You are using an old version of scipy. '
'Active contours is implemented for scipy versions '
'0.14.0 and above.')
if new_scipy:
snake = active_contour(img, init, alpha=0.01, beta=0.01, w_line = 5, w_edge = 0, gamma=0.01, bc = 'periodic')
fig = plt.figure(figsize=(7, 7))
ax = fig.add_subplot(111)
plt.gray()
ax.imshow(img)
ax.plot(init[:, 0], init[:, 1], '--r', lw=3)
ax.plot(snake[:, 0], snake[:, 1], '-b', lw=3)
ax.set_xticks([]), ax.set_yticks([])
ax.axis([0, img.shape[1], img.shape[0], 0])
我认为您的问题与 this 有关,它是 spyder
中的一个错误。到目前为止,它提供了一个部分解决方案,即使用不同的 Matplotlib 后端。您可以在以下位置更改它:
Preferences > Console > External modules > Matplotlib
从默认 (Qt4Agg) 到 TkAgg(Windows 上唯一可用的其他)。
您可以尝试的另一件事是更新 spyder
然后尝试 运行 您的脚本。