背景

Pyscripter是python下一个非常流行的开源IDE,笔者一直使用Pyscripter来来编写python脚本。

关于IDE的一些特性本文不在赘述,主要是分享一下今天遇到的一个问题。

问题描述

笔者的程序有两个模块,分别列为A 和 B,B模块是程序入口并将引入A模块的类和函数

笔者更新A模块后,在B模块中运行程序,发现调用A模块还是之前的内容,并没有更新,只有在重启Pyscripter的时候才会更新,这个给我的调试带来了很大的困难,每次都要重启让整个过程变的效率低下。

于是我决定找出问题的根本原因,是程序的bug还是设置的问题,在翻阅了Pyscripter的官方文档之后,我发现了一个关键的段落:

Remote Interpreter and Debugger
In addition to using the internal integrated Python engine, PyScripter offers you the option to use one of three remote Python engines. These remote engines run in a separate process, so, when using them, script errors should not affect the stability of PyScripter. You can select the python engine that will be active from the Python Engine submenu of the Run menu. Here is a brief explanation of the Python engine options:

Python Engines:

Internal
This Python engine is faster than the other options however if there are problems with the scripts you are running or debugging they could affect the reliability of PyScripter and could cause crashes. Another limitation of this engine is that it cannot run or debug GUI scripts nor it can be reinitialized.

Remote
This the default Python engine of PyScripter and is the recommended engine for most Python development tasks. It runs in a child process and communicates with PyScripter using rpyc. It can be used to run and debug any kind of script including GUI scripts. However if you run or debug GUI scripts you may have to reinitialize the engine after each run.

官方文档描述在使用Internal Engine的时候script有可能不能被重新初始化,我当前的Python设置的正是Internal Engine, 当我将Engine设置为Remote Engine的时候问题解决

解决方案

将Pyscripter Engine设为Remote Engine

反思心得

  1. 笔者之前一直以为Remote Engine是Pyscripter为未安装python编译器的开发者提供的一个远程解析器,实际上这种理解是错误的,通过官方文档的描述,我觉得Remote Engine更像是用命令行来运行Pyscripter编写的程序。
  2. Internal Engine对当前编辑的脚本是可以重新初始化的,所以非常适合编写单独模块,因为之前我大部分用pyscripter来编写的程序都需要送到服务器上运行(本地无运行环境),所以这个问题这么晚才发现,惭愧。
  3. Remote Engine的速度明显慢于Internal Engine,从官方文档中也可以找到线索,大概是因为每次都要重新加载所有py文件的原因吧。
  4. 在开发单独模块的时候推荐使用Internal Engine速度快,在编写多文件的程序时候一定要开成Remote Engine.
  5. 可能是引文安装Pyscripter的时候默认的engine是remote engine,所以google 百度了许久都无法找到类似问题的描述

以上是笔者一些浅显的认识,欢迎各位批评指点。

Pyscripter 不能正确调用另一文件中模块的问题的解析(Internal Engine 和 Remote Engine)的更多相关文章

  1. python中一个py文件如何调用其他py文件中的类和函数

    HelloWorld  文件名称  Hello是类 from HelloWorld import Hello >>> h = Hello() >>> h.hello ...

  2. 利用php调用so库文件中的代码

    某个功能被编译到so文件中,那么如何通过php来调用它?一个方法是写一个php模块(php extension),在php中调用该模块内的函数,再通过该模块来调用so中的函数.下面做一个简单的例子,使 ...

  3. python调用另一个文件中的代码,pycharm环境下:同文件夹下文件(.py)之间的调用,出现红线问题

    如何调用另一个python文件中的代码无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等, ...

  4. thinkphp遇到的小问题,js文件中U方法不被解析

    我想在js文件中写ajax, 写完发现异常, 本以为是js文件中不支持ajax 后来发现时地址解析错误. 也就是U方法在js文件中不被解析. 貌似thinkphp解析,tpl文件中的一些元素. js文 ...

  5. lua调用不同lua文件中的函数

    a.lua和b.lua在同一个目录下 a.lua调用b.lua中的test方法,注意b中test的写法 _M 和 a中调用方法: b.lua local _M = {}function _M.test ...

  6. JS在不同js文件中互相调用

    例如有这样一个html,里面有一个按钮,当按下时调用b.js文件中的方法b().而b()中又要调用a.js文件中的方法a().若要实现这个功能,必须注意,将要引入的Js文件代码放在</body& ...

  7. Js文件中调用其它Js函数的方法

    在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分代码在另外一个Js文件中已经完成了,自己只需要调用这个方法再加上几句代码就可以实现所需的功能.我们知道,在h ...

  8. Python中if __name__=="__main__" 语句在调用多进程Process过程中的作用分析

    2018年2月27日 于创B515 引言 最近准备学习一下如何使用Python中的多进程.在翻看相关书籍.网上资料时发现所有代码都含有if __name__=="__main__" ...

  9. Windows Store App 全球化:引用分离资源文件中的资源

    大部分应用程序仅需要单个默认资源文件,例如Strings/zh-CN/Resources.resw,但是在某些应用程序中,最好将资源分离到多个资源文件中,以便更好地组织资源内容,这样就需要考虑如何引用 ...

随机推荐

  1. zookeeper伪分布式集群安装

    1.安装3个zookeeper 1.1创建集群安装的目录 1.2配置一个完整的服务 这里不做详细说明,参考我之前写的 zookeeper单节点安装 进行配置即可,此处直接复制之前单节点到集群目录 创建 ...

  2. XP系统如何把桌面图标变大

    右击桌面,属性,外观,高级,在项目里面找到图标,大小改为你喜欢的样式.   我测试的结果是:图标大小改为42,字体大小改为8,图标垂直间距改为100,水平间距改为54效果不错.

  3. Android app启动耗时分析

    前言 app启动耗时过长的话,无论你的app里面的内容多么丰富有趣,作为一个用户,首先是没有耐心去等待的,如果我是一个用户,我会这样想:这是什么垃圾公司出的什么烂app,再等2s不进来就卸载,黑人问号 ...

  4. 如何监控Tomcat服务器

    如何监控Tomcat服务器 发表于:2009-06-25来源:作者:点击数:2651 标签:tomcatTomcat服务器 在进行 性能测试 时,一般都需要对应用服务器进行监控,监控的指标包括应用服务 ...

  5. 基于Netty的RPC简易实现

    代码地址如下:http://www.demodashi.com/demo/13448.html 可以给你提供思路 也可以让你学到Netty相关的知识 当然,这只是一种实现方式 需求 看下图,其实这个项 ...

  6. python内置函数、匿名函数、递归

    python3--内置函数 内置函数: 截止到python 3.6.2 版本,现在python一共提供了68个内置函数:即python提供给你直接可以拿来使用的所有函数.   内置函数  (点击函数查 ...

  7. 关于nodejs中npm命令没有反应的解决方法

    最近在学习angularJS,正在做一个单页面应用,在安装nodejs之后,发现命令行传了输入npm -v能输出结果外,其余npm的任何操作都没有反应,一开始我以为是下载的比较慢,等了半小时还是没动静 ...

  8. mysql课程记录

    thread_pool可以使用Percona的版本和Mariadb的版本  都是支持的  主从切换是根据HA的方式,TDDL(Taobao Distribute Data Layer) 的方式的话,推 ...

  9. MVC项目发布到IIS遇到的问题

    MVC4 + .NET Framework 4.5 +Windows Server 2008+ IIS7.5 + 4.0集成模式池 ,发布后可能会遇到404.0 或者403.14错误,在web.con ...

  10. Android studio 使用心得(一)—android studio快速掌握快捷键

    大家都是从eclipse转过来了,所以早就熟悉了eclipse那一套快捷键. File—>settings—>keymap–>选择eclipse就搞定 话是这么说,但是自动化提示的变 ...