Pyscripter是python下一个非常流行的开源IDE
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是python下一个非常流行的开源IDE的更多相关文章
- python下一个转码的问题
我想把一个quoted的字符串经过unquote处理后,打印出来.被unquote处理后的字串应该是utf-8的,因此还需要按照utf-8再做一次解码,代码如下: import urllib im ...
- Ubuntu 下一个 vim 建立python 周围环境 构造
于Windows通过使用各种现成的工具使用,去Linux下一个,没有一个关于线索--总之google有些人的经验,折腾来折腾,开发环境也算是一个好工作. 1. 安装完成vim # apt-get in ...
- 利用Python来远程控制肉鸡自由操作,下一个黑客大佬就是你
利用Python来远程控制肉鸡自由操作,下一个黑客大佬就是你 直接开始主题 Server:控制端 Client:被控端 具体实现 然后当有肉鸡连接的时候我们需要获得肉鸡的socket,并且记录下来,以 ...
- 寻找下一个结点 牛客网 程序员面试金典 C++ java Python
寻找下一个结点 牛客网 程序员面试金典 C++ java Python 题目描述 请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继). 给定树的根结点指针TreeNode* root ...
- 【剑指Offer】二叉树的下一个结点 解题报告(Python)
[剑指Offer]二叉树的下一个结点 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews ...
- 【python接口自动化框架-unittest】如何传参数到下一个case
1.前提 平时我们用unittest的时候,都知道每个test_ 都是相互独立的,但是很多现实情况是,我们下一个接口参数,可能会用到上一个接口返回的json字段,那么,我们怎么去实现呢 2.实例 1. ...
- 力扣——Next Permutation(下一个排列) python实现
题目描述: 中文: 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改,只允许 ...
- LeetCode 31. 下一个排列 | Python
31. 下一个排列 题目 实现获取下一个排列的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列. 如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列). 必须原地修改, ...
- 【LeetCode】116. 填充每个节点的下一个右侧节点指针 Populating Next Right Pointers in Each Node 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归 日期 题目地址:https://leetcode ...
随机推荐
- std::move()
#include <iostream> #include <utility> #include <vector> #include <string> i ...
- CII-原子
<atom.h> #ifndef ATOM_INCLUDED #define ATOM_INCLUDED extern int Atom_length(const char *str); ...
- WPF应用程序支持多国语言解决方案
原文:WPF应用程序支持多国语言解决方案 促使程序赢得更多客户的最好.最经济的方法是使之支持多国语言,而不是将潜在的客户群限制为全球近70亿人口中的一小部分.本文介绍四种实现WPF应用程序支持多国语言 ...
- PHP 以POST方式提交XML、获取XML,最后解析XML
以POST方式提交XML // Do a POST $data="<?xml version='1.0' encoding='UTF-8'?> <TypeRsp> & ...
- 移动端App混合开发问题 汇总
1.IOS系统,双击页面,页面会向上移动一节,无法滑动复原. //阻止用户双击放大 var agent = navigator.userAgent.toLowerCase(); //检测是否是ios ...
- ubuntu安装nVidia驱动,遇到终端闪砾问题并解决
安装nvidia的官方驱动之后,比起nouvean来说感觉速度快了不少. 安装该驱动很简单,但选择哪个驱动是要注意的.因为今天我试了nvidia的多个驱动后都在ubuntu下用起来并不好. 我现在的环 ...
- Java 集合之LinkedList源码分析
1.介绍 链表是数据结构中一种很重要的数据结构,一个链表含有一个或者多个节点,每个节点处理保存自己的信息之外还需要保存上一个节点以及下一个节点的指针信息.通过链表的表头就可以访问整个链表的信息.Jav ...
- 怎样使用万用表来测试板子上的TX和RX引脚
最近在看openwrt时看到的一个方法,直接看下面写的: 文章来自:http://wiki.openwrt.org/doc/hardware/port.serial 经实际测试时发现,将万用表的负表笔 ...
- java 学习List 的 add 与set差分法
/** * 在List收集在许多方面.add(int index,Object obj)方法与set(int index,Object e)方法不易区分 * .通过以下实例.能够看出两个方法中的差别 ...
- Andorid类似Fragment更换布置方法
public void replaceRightView(View v) { int f = LinearLayout.LayoutParams.MATCH_PARENT; LinearLayout. ...