2017-06-20 7 views
1

を他のファイルをインポートすることはできません私はpycharmからそれを実行したときに、それがうまく動作しますが、コマンドラインから実行するとき、それはが同じディレクトリに

import util as u 

ModuleNotFoundError: No module named 'util'

をI文句というスクリプトを持っていますこのアドバイスに従ってください: Script running in PyCharm but not from the command line

インタープリタは同じですが、作業ディレクトリは同じですが、sysパスは異なります。 sys.pathの要素を印刷するとき、この

mymodule 
    sub_1 
     util.py 
    sub_2 
     ... 
    main.py 

pycharmは、すべてのフォルダを示しよう

モジュールのフォルダが見えます。コマンドラインから実行しているときは、main.pyのディレクターから実行しても表示されません。 そのディレクトリからファイルを実行しても、PYTHONPATHにディレクトリを追加する必要はありますか?すべてのプロジェクトのディレクトリが追加されてしまったような過酷な感じです。これを行う良い方法はありますか、それとも標準的な手順ですか?

+1

がsub_1'あなたがパッケージを持っていないようだ – digitake

+0

として.util輸入 '__init __。py'をしようと働いていましたサブパッケージでは、たくさんのiflesを含むディレクトリがあります。 'mymodule'がパッケージであれば、それを含んでいるディレクトリは' sys.path'にあります。その下にある全てのディレクトリは '__init __。py'を持っていて、その中にスクリプトを呼び出そうとしません。 lounchスクリプトは最上位ディレクトリと同じレベルにあり、基本的にはエントリポイントをインポートして呼び出す必要があります。 – RaminNietzsche

+0

'における相対' u'が作る – mata

答えて

0

digitakeの提案は

import .util as u 
0

は、私はより多くの情報が解決策の提言を行うために必要とされていると思いますが、ここで私がチェックするものです。

  1. モジュールのパッケージが__init__.pyファイル(複数可)を持っているん
  2. コマンドラインを使用して、 -IパラメータでPythonインタプリタを呼び出していますか? は、モジュールまたはパッケージのローカルディレクトリをスキャンします。そうしないと、実行しないで実行してください。相対パスを使用する
関連する問題