Pyscripter 不能正确调用另一文件中模块的问题的解析(Internal Engine 和 Remote Engine)
背景
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

反思心得
- 笔者之前一直以为Remote Engine是Pyscripter为未安装python编译器的开发者提供的一个远程解析器,实际上这种理解是错误的,通过官方文档的描述,我觉得Remote Engine更像是用命令行来运行Pyscripter编写的程序。
- Internal Engine对当前编辑的脚本是可以重新初始化的,所以非常适合编写单独模块,因为之前我大部分用pyscripter来编写的程序都需要送到服务器上运行(本地无运行环境),所以这个问题这么晚才发现,惭愧。
- Remote Engine的速度明显慢于Internal Engine,从官方文档中也可以找到线索,大概是因为每次都要重新加载所有py文件的原因吧。
- 在开发单独模块的时候推荐使用Internal Engine速度快,在编写多文件的程序时候一定要开成Remote Engine.
- 可能是引文安装Pyscripter的时候默认的engine是remote engine,所以google 百度了许久都无法找到类似问题的描述
以上是笔者一些浅显的认识,欢迎各位批评指点。
Pyscripter 不能正确调用另一文件中模块的问题的解析(Internal Engine 和 Remote Engine)的更多相关文章
- python中一个py文件如何调用其他py文件中的类和函数
HelloWorld 文件名称 Hello是类 from HelloWorld import Hello >>> h = Hello() >>> h.hello ...
- 利用php调用so库文件中的代码
某个功能被编译到so文件中,那么如何通过php来调用它?一个方法是写一个php模块(php extension),在php中调用该模块内的函数,再通过该模块来调用so中的函数.下面做一个简单的例子,使 ...
- python调用另一个文件中的代码,pycharm环境下:同文件夹下文件(.py)之间的调用,出现红线问题
如何调用另一个python文件中的代码无论我们选择用何种语言进行程序设计时,都不可能只有一个文件(除了“hello world”),通常情况下,我们都需要在一个文件中调用另外一个文件的函数呀数据等等, ...
- thinkphp遇到的小问题,js文件中U方法不被解析
我想在js文件中写ajax, 写完发现异常, 本以为是js文件中不支持ajax 后来发现时地址解析错误. 也就是U方法在js文件中不被解析. 貌似thinkphp解析,tpl文件中的一些元素. js文 ...
- lua调用不同lua文件中的函数
a.lua和b.lua在同一个目录下 a.lua调用b.lua中的test方法,注意b中test的写法 _M 和 a中调用方法: b.lua local _M = {}function _M.test ...
- JS在不同js文件中互相调用
例如有这样一个html,里面有一个按钮,当按下时调用b.js文件中的方法b().而b()中又要调用a.js文件中的方法a().若要实现这个功能,必须注意,将要引入的Js文件代码放在</body& ...
- Js文件中调用其它Js函数的方法
在项目开发过程中,也许你会遇这样的情况.在某一Js文件中需要完成某一功能,但这一功能的大部分代码在另外一个Js文件中已经完成了,自己只需要调用这个方法再加上几句代码就可以实现所需的功能.我们知道,在h ...
- Python中if __name__=="__main__" 语句在调用多进程Process过程中的作用分析
2018年2月27日 于创B515 引言 最近准备学习一下如何使用Python中的多进程.在翻看相关书籍.网上资料时发现所有代码都含有if __name__=="__main__" ...
- Windows Store App 全球化:引用分离资源文件中的资源
大部分应用程序仅需要单个默认资源文件,例如Strings/zh-CN/Resources.resw,但是在某些应用程序中,最好将资源分离到多个资源文件中,以便更好地组织资源内容,这样就需要考虑如何引用 ...
随机推荐
- java开发中的一些概念名词
1. JavaBeans JavaBean是符合某种规范的Java组件,也就是Java类.它必须满足如下规范: 1)必须有一个零参数的默认构造函数 2)必须有get和set方法,类的字段必须通过get ...
- Direcshow中视频捕捉和參数设置报告
Direcshow中视频捕捉和參数设置报告 1. 关于视频捕捉(About Video Capture in Dshow) 1视频捕捉Graph的构建 一个能够捕捉音频或者视频的graph图 ...
- 本地化,将cancel替换成"取消"
在工程文件中选info,添加下面内容
- ubuntu卸载第三方库
下面以pcl和opencv为例进行说明. 参考资料: https://www.cnblogs.com/txg198955/p/5990295.html ubuntu卸载opencv并重装opencv ...
- MAC OS X 10.8 操作远程SSH服务器 + 无密码输入使用SSH服务器
怀揣着为中小企业量身定做一整套开源软件解决方案的梦想开始了一个网站的搭建.http://www.osssme.org/ 使用命令行连接连接远程SSH服务器,root为我使用的远程服务器用户名,@后为I ...
- java 状态对象
package cn.itcast.hibernate.sh.state; import org.hibernate.Session; import org.hibernate.Transaction ...
- 两周赚100万 在Google Play做对了什么
http://tech.it168.com/a2013/0301/1457/000001457913_all.shtml
- centos7 crontab 定时执行python任务不执行的原因及解决办法
1.问题描述 在用crontab设置定时任务时,发现py脚本在crontab中报错,显示import某些包找不到,但是手动直接运行py脚本,完全正常. 01 05 * * * ./get_topi ...
- intellij jetBrains phpstorm/webstorm/IDEA 编辑器使用诀窍
下载地址 https://www.jetbrains.com/products.html?fromMenu 主题/皮肤切换或下载:https://blog.csdn.net/smallxiannoti ...
- asp.net,cookie,写cookie,取cookie(转载)
Cookie是一段文本信息,在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一.Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一 ...