私はモジュール(my_mod.py
フォルダーにあるファイルmy_module
ファイル)を書きました。現在、フォルダcool_script.py
にあるファイルcur_proj
で作業しています。私はPyCharmの中でFile-openを使ってフォルダを開いています(そしてそれはPyCharmプロジェクトだと思います)。
ProjectView(CMD-7)では、私のプロジェクトcur_proj
(赤)と "External Libraries"の下にmy_module
があります。 cool_script.pyでは、書くことができます
from my_module import my_mod as mm
そしてPyCharmはmy_modに対してさえ提案をします。ここまでは順調ですね。
しかし、cool_script.pyを実行しようとすると、PyCharmが「my_moduleという名前のモジュールはありません」と表示します。
これは私には奇妙に思えます。
A)端末(OS 10.10.2)では、Pythonで、私は問題なくモジュールをインポートすることができます - .bashrcのPYTHONPATHに対応するエントリがあります。
B)PyCharmで - 設定 - プロジェクトcur_proj - プロジェクトインタプリタ - pythonインタプリタの隣のCogWheel - もっと - 選択したインタプリタアイコンのパスを表示、PYTHONPATHからのパスは現われる(私が思うべき)
それ故、私がcool_script.pyを実行しようとするとなぜエラーが出るのですか? - 何が足りないのですか?
ノート:
my_module
へのパスは正しいです__init__.py
ファイル(空のファイル)を入れるmy_module
とcur_proj
の両方に==virtualenv
を使用していません私の現在のプロジェクトで、実行 - 設定の編集にPyCharmを起動すると、チェックマーク付きで選択される2つのオプションがあります: "コンテンツルートをPYTHONPATHに追加する"と " ソースルートをPYTHONPATHに追加します。 "両方のチェックを外したときは、自分のモジュールをロードできます。
それで今それはうまくいく - しかしなぜ?
さらなる疑問が浮かび上がった。
自分のモジュールが同じパスにある場合は、そのパスをSources Root
としてマークする必要があります。プロジェクトエクスプローラで、インポートしたいディレクトリを右クリックします。次にMark Directory As
を選択し、Sources Root
を選択します。
これが役に立つことを願っています。
私は今この問題を抱えていたので、@ Beatriz Fonsecaと@Julieが指摘したのと同様の方法でそれを解決することができました。
File
- > Settings
- > Project: YourProjectName
- > Project Structure
の順に進むと、現在作業中のプロジェクトのディレクトリレイアウトが表示されます。自分のディレクトリをたどって、それらをSource
ディレクトリとしてラベル付けする必要があります。すべてのソースファイルに対して、またはインポート専用のファイルのResource
フォルダとして。
また、__init__.py
ファイルをリソースディレクトリ内、または実際にインポートしたい場所に配置するようにします。これで問題なく動作します。
私はこの答えが誰かに役立つことを願っています、そしてうまくいけばJetBrainsはこの迷惑なバグを修正するでしょう。
私が試したのは私のファイルがある場所を探すことです。
例えばE:\git_projects\My_project\__init__.py is my location.
私はFile - > Setting - > Project:My_project - > Project Structureの順に行き、言及場所E:\git_projects\My_project
にコンテンツルートを追加しました。
それは私のために働きました。
my_module
はモジュールではないフォルダーであり、フォルダーをインポートすることはできません。my_mod.py
をcool_script.py
と同じフォルダーに移動してからdoimport my_mod as mm
を移動してみてください。これは、pythonが現在のディレクトリとsys.path
のみを調べ、同じディレクトリにない限りmy_mod.py
を見つけられないためです。
あるいは、他のディレクトリからインポートする方法を説明している回答がある場合は、 こちら を参照してください。
あなたの他の質問に関しては、私はPyCharmを使っていないので私は知りません。
これは、Pythonインタプリタがあなたのコードを見つけられないときに起こります。この場所で自分のコードを見つけるには、Pythonに明示的に言及する必要があります。
そうするには:
sys.path.extend(['your module location'])
を追加してください。あなたの場合:
始めに、次のコードを書きます。
import sys
sys.path.extend([my module URI location])
この文を書いたら、次のコマンドを実行できます。
from mymodule import functions
「PYTHONPATHにソースルートを追加する」というエラーも出ていました。私の問題は、project/subproject1/thing/src
とproject/subproject2/thing/src
のように同じ名前の2つのフォルダーがあり、その両方にソースルートとしてマークを付けたことです。 "thing"
フォルダの1つを"thing1"
(任意の一意の名前)に名前変更したとき、それはうまくいきました。
もしPyCharmが選択されたソースルートを自動的に追加するのであれば、それはフルパスを使用せず、それ故同じ名前のフォルダを混同します。
実行しなければならないソースファイルの実行設定を再作成して、IDEが新しいパスを選択するようにすることが重要な混乱を招く手順です。
実際に私にとってうまくいった方法は、Run/Edit Configurations ...に行き、左側で実行しようとしているファイルの設定を選択し、「PYTHONPATHにソースルートを追加する」ボックスのチェックを外して保存し、それから戻ってボックスをチェックして保存します。それがうまくいくでしょう。
そうならあなたがに行く場合
- >設定 - >プロジェクト:My_project - >プロジェクト構成
ソースコードが利用可能なディレクトリだけを「ソース」としてマークします(uは同じウィンドウに表示されます)。ソースコードを含むディレクトリが青に変わります。今、同じディレクトリに存在するモジュールをインポートすることができます。
ディレクトリをソースルートとしてマークする必要なしにこの問題を解決するには、実行設定を編集し、実行中に "Redirect input from"オプションを選択し、実行したいスクリプトを選択します。スクリプトがこのディレクトリで対話的に実行されたかのように扱われるため、これは機能します。ただし、Pythonはモジュール名に「no module named x」というエラーを表示します。
インタプリタがimport文を実行すると、次のソースから組み立てられたディレクトリのリストでx.pyを検索します。
私のために働いた答えは確かにOPが彼の2015年の更新で言及しているものでした:uncheck これら二つのボックス あなたのPythonの実行設定で:
Run configが適切なvenvを使うように設定されているので、PyCharmはパスに物事を追加するための追加作業をする必要はありませんでした。代わりにそれはエラーを引き起こしていました。
コンテンツルートはプロジェクトコードを保持するフォルダですが、ソースルートも同じように定義されています。私が理解した唯一の違いは、ソースルートのコードがコンテンツルートのコードの前に構築されているということでした。
チェックを外しても、Djangoに手動で接続されているパッケージ内に別々のモジュールを作っていない限り、ランタイムには影響しません。つまり、あなたのファイルが 'from Django import ...'を持っていないか、Django経由で呼び出されていない関数がある場合、これら2つのオプションのチェックを外すと誤動作を起こします。
更新 - この問題は、Virtual Environmanetを使用している場合、および提供されている端末を介してプロジェクトを制御している場合にのみ発生します。原因ターミナルは、仮想環境ではなくデフォルトのシステムpyhtonpathを介して動作します。 python Djangoコントロールパネルは問題なく動作します。
ln -s someProject
SomeDirectory/someProjectDirと2つのファイルfile1.pyとfile2.pyがあり、file1.pyがこの行でインポートしようとしている場合
someProjectDirインポートファイル2から
たとえあなたがsomeProjectDirをソースディレクトリとして指定したとしても、それが環境設定、プロジェクト、プロジェクト構造メニューにコンテンツルートとして表示されたとしてもそれは機能しません。これが機能する唯一の方法は、上記のようにプロジェクトをリンクすることです(unixコマンド、macで動作しますが、Windowsの使用法や構文は不明)。ソフトリンクは依存プロジェクトでPycharmによって作成されたので、Pycharmがバージョン管理からのチェックアウトまたはコンテキストルートとしての追加のいずれかで自動的にこれを行うメカニズムがあるようです。したがって、ディレクトリの奇妙な複製は面倒であり、必要性は複雑ですが、同じものをコピーするだけです。 autoが作成した依存関係でも、バージョン管理下では新しいディレクトリとして表示されません。おそらく.ideaファイルを比較するともっと明らかになるでしょう。
作業ディレクトリが正しく設定されていないときにこのエラーを受け取りました。フレッシュなインストールだったのでそれは非常に奇妙でした、そして私はPyCharmがルートディレクトリの代わりにプロジェクトの作業ディレクトリとしてランダムなディレクトリを使用する理由を考えることができません
View->ToolBar
とView->Tool Buttons
をクリックProject
が表示されたら、それを右クリックしてAutoscroll to source
を押してからコードを実行します。これは私のために働きました。