2014-10-20 71 views
12

我在调试一个使用psutil.Popen对象的Python应用程序。当我开始一个子进程,PyCharm代替我与以下命令行:用PyCharm调试Popen子进程

python -m pydevd.py --multiproc --client 127.0.0.1 --port 52581 --file <myapplication> 

这一个错误结束:

python.exe: Import by filename is not supported. 

当我不-m选项启动相同的命令,似乎一切都精细。有没有办法改变PyCharm的调试器启动命令?

我已经更新到PyCharm社区版4.0.3和新的调试命令如下:

python.exe "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 4.0.3\helpers\pydev\pydevd.py" 
--multiproc --client 127.0.0.1 --port 62661 
--file __main__.py local -c local.yml -f input/11_12.xls 

其中-c-f是我模块的命令行参数。调试器启动命令已更改,但未解决问题;我仍然收到Import by filename is not supported错误。

代码示例可用here at Bitbucket.org。 Pycharm的运行配置应该是这样的:

Script:   __main__.py 
Script parameters: server 
Working directory: %path to the repository% 
+0

这是一个艰难的一个。我得看更多。 – 2014-10-21 06:39:09

+0

''看起来像什么?它只是一个名称或完整路径?如果它是完整路径,则尝试将其更改为仅命名,并确保父文件夹位于“sys.path”中。比较http://stackoverflow.com/questions/14465473/ – 2014-10-21 15:56:50

+0

面对同样的问题与社区版3.4(和我的第二天的Python开发)。任何人都可以评论,如果它曾经与以前的版本? – Prabhjot 2014-10-24 14:43:26

回答

9

正如彼得所说,PyCharm“附加到在调试自动子过程”。如果子进程是Python进程,则PyCharm调试器会更改进程的启动参数(请参阅功能patch_args,网址为source)。当你以这种方式启动子:

args = ['python', 
     '-m', 'pycharm-multiprocess-debug', 
     'worker'] 
worker = subprocess.Popen(args) 

实际启动命令是这样的:

python.exe -m "C:\Program Files (x86)\JetBrains\PyCharm Community Edition 4.0.3\helpers\pydev\pydevd.py" 
--multiproc --client 127.0.0.1 --port 62661 
--file pycharm-multiprocess-debug 

所以出了问题。有几种解决方法,我可以找到:

  1. 最简单的方法,如果你不需要调试子,只要关闭“附加到在调试自动子过程”内PyCharm设置

  2. 改变你的ARGS到:

    args = ['python', '__main__.py', 'worker'] 
    

    缺点是你只能运行一个Python文件,而不是Python模块。

  3. 我建议Python的子进程的最后解决方案:

    from multiprocessing import Process 
    
    def server(): 
        p = Process(target=worker) 
        p.start() 
        print 'worker pid: {}'.format(p.pid) 
        p.join() 
    
+0

第二个解决方案解决了这个问题。 – 2014-12-23 15:55:23

+0

我应该在哪写代码? args = ['python','__main__.py','worker'] – 2015-03-10 01:08:30

+0

@MARCO,'args'在Ivan的代码示例中:https://bitbucket.org/lgyanf/pycharm-multiprocess-debug/src/ 973bebe2e1c249ff75f5db1e8ddaad0720a0dec5/__ main__.py?at=default – ZZY 2015-03-10 06:16:33