質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

Q&A

1回答

749閲覧

PyCharmでのceleryのデバッグ方法

alphine

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

デバッグ

デバッグはプログラムのバグや欠陥を検知し、開発中のバグを取り除く為のプロセスを指します。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

PyCharm

エディター・開発ツール

0グッド

0クリップ

投稿2018/02/13 10:32

編集2022/01/12 10:55

PyCharmのデバッガでceleryのデバッグを行いたいのですが、上手く行かず困っています。

環境はWindows10なんですが、普段は以下をコマンドプロンプトでキックしてcelery起動しています。

celery -A mytask:app worker --loglevel=info

以下のstackoverflowに画像付きで回答されているように、デバッグ起動は可能なようです。
https://stackoverflow.com/questions/37150910/how-can-i-use-pycharm-to-locally-debug-a-celery-worker

設定項目がいまいちよくわからないのですが、上記の回答を元に以下のような設定で起動してみました。

イメージ説明

結果、以下のようなImportErrorが出ました。
(ImportErrorはmytaskに到達するより前のceleryモジュール内で発生しています。)

イメージ説明

正しいやり方を教えていただけないでしょうか?

Python 3.6.3 :: Anaconda custom (64-bit)
celery 3.1.25 (Cipater)
Pycharm 2017.3.3 (ProfessionalEdition)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wakame

2018/02/16 08:56

jetbrainsのsupportに問い合わせた方がここより早く回答を得られるかなと思いました。
guest

回答1

0

stackoverflow の回答をみてみました。
この質問は重複しているので、

How do I enable remote celery debugging in PyCharm?

を、今一度読んでください。

スクリプトを起動するとき、スクリプト本体へのパスが通っていないため import error になっています。

もう少し詳しく説明すると、 celery というスクリプトファイルを実行するように指定されていますが、そこには celery というファイルはなく、celery ディレクトリがあり、かつ __main__.py があるので、それを起動しています。そのとき、celery モジュールへのパスが通っていないため、maybe_patch_concurrency を import 出来ないという状態です。

ちなみに、起動スクリプトの中身をみてみてください。ここでは __main__.py にある main を呼び出しているだけです。 python の起動スクリプトは全て、モジュールにある一つの関数を呼び出すだけのものになっています。

ということで、起動するときの設定で間違っているのは、起動スクリプトの指定と、モジュールへのパスの指定です。

  • 起動スクリプト

Script path には、スクリプトのある場所を指定するのですが、あなたの設定は celery モジュールがある場所を指定しています。ここに、起動スクリプトがある場所を指定してください。

(このままの指定でも、モジュールへのパスが通っていれば、動くと思いますが…。いちおう。)

  • モジュールへのパス

working directory を指定すると、そこからモジュールを探しに行きます。ですので、モジュールが存在している場所(パス)を指定してください。

あらゆるプログラミング言語に言えることですが、命令文はすぐに覚えるし、星の数ほど身の回りに転がっているので、それらを覚える必要はまったくありません。それより各言語の仕組みを覚える方が重要になってきます。__inii__ ってなに?とか、暗黙で使われている機能など。

あと、OS の機能とか。実行ファイル、パラメータや作業ディレクトリの指定は、 Linux や Windows など、あらゆるコンピューターで共通です。PyCharm だろうが、 Eclipse だろうが、Visual Studio Code だろうが、みないっしょ。

celery スクリプトがありません! パスがありません!、とエラーになる場合が多いのですが、 今回は __main__.py が存在していたため、余計にわからなくなったと思います。

ちなみに、私は PyCharm を使ったことはなく、 celery も全くの無知です。

happy python life!

参考
29.4. main ー トップレベルのスクリプト環境 ー python 3.6.5 ドキュメント

投稿2018/06/18 13:21

Bindi

総合スコア129

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問