2014-10-20 19 views
12

Psutil.Popen nesnelerini kullanan bir Python uygulamasında hata ayıklamaya çalışıyorum. Bir alt işlemi başlattığınızda, pycharm ile benim komut satırını değiştirir aşağıdadır:PyCharm ile birlikte gelen alt işlemlerin hata ayıklanması

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

: Ben -m seçeneği olmadan aynı komutu başlatmak zaman etraf gibi görünüyor

python.exe: Import by filename is not supported. 

ince. PyCharm'ın debugger başlatma komutunu değiştirebilmemin bir yolu var mı?

Ben pycharm Community Edition 4.0.3 için güncelledik ve yeni ayıklayıcı komutu gibi görünür:

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 

nerede -c ve -f benim modülün komut satırı bağımsız değişkendir. Hata ayıklama başlatma komutu değişti, ancak sorunu çözmedi; Hala Import by filename is not supported hatasını alıyorum.

Bir kod örneği kullanılabilir here at Bitbucket.org.

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

Bu zor biridir:

  • Python alt işlemi için son çözüm öneriyoruz. Daha fazla bakmalıyım. –

  • +0

    '' nasıl görünüyor? Sadece bir isim mi yoksa tam yol mu? Tam yol ise, yalnızca bu adı değiştirmeyi deneyin ve üst klasörün sys.path' içinde olduğundan emin olun. Http://stackoverflow.com/questions/14465473/ –

    +0

    ile karşılaştırın Community Edition 3.4 (ve python geliştirmenin 2. günüm) ile aynı sorunu ele alın. Şimdiye kadar önceki versiyonlarla çalışmışsa yorum yapabilir mi? – Prabhjot

    cevap

    9

    Piotr belirtildiği gibi, pycharm 'ayıklama sırasında otomatik olarak alt sürecine takın': gibi pycharm yayınlanma yapılandırma bakmak gerekir. Alt işlem bir Python işlemiyse, PyCharm hata ayıklayıcısı sürecin başlatma argümanlarını değiştirir (source adresindeki patch_args işlevine bakın). Bu şekilde alt işlemi başlattığınızda:

    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 
    

    yüzden yanlış gitti:

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

    fiili başlangıç ​​komut gibidir. birkaç geçici çözüm bulabilirim vardır:

    1. kolay yolu, sen ayıklama alt sürecine ihtiyaç sadece kapatmak pycharm

    2. değişikliği sizin args ayarları içinde "ayıklama sırasında otomatik olarak alt sürecine Ekle" yoksa to:

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

      Dezavantaj, Python modülünü değil, yalnızca bir Python dosyasını çalıştırabilirsiniz.

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

    ikinci çözüm sorunu çözüldü. –

    +0

    Bu kodu nereye yazmalıyım? args = ['python', '__main__.py', 'işçi'] –

    +0

    @MARCO, 'args', Ivan'ın kod örneğindedir: https://bitbucket.org/lgyanf/pycharm-multiprocess-debug/src/ 973bebe2e1c249ff75f5db1e8ddaad0720a0dec5/__ main__.py?at=default – ZZY

    İlgili konular