2016-05-30 3 views
2

私はPythonで書いたモジュールをインポートしようとしていますが、数字を含むリストを出力します。私が抱えている問題は、別のディレクトリからインポートできるようにすることですが、これまでに読んだ回答は自分の状況では機能していないようです。私は、次の実装に私はなっていますマイドキュメントフォルダ内のディレクトリからprintnumbers.pyをインポートしたい与え例えばディレクトリからPythonのユーザ定義モジュールをインポートする

、:

import sys 
    sys.path.append('/home/jake/Documents') 
    import printnumbers.py 

「インポートエラー」のコードの結果のこのsnipit私に告げます指定されたモジュールが存在しないことを示します。私はここからどこに進んでいるのか正確にはわかりません。パスとモジュール名の正しい綴りを確認するために何度もチェックしました。私はまだ "sys.path"に何が追加されているかを正確に理解しようとしています。私が理解していることから、そのディレクトリ内のモジュールを検索するようプログラムに指示していますか?

私の初心者の質問にお答えいただき、ありがとうございました。私はちょうどPythonのドキュメントが私の心の枠を提供していないことをより良く理解したいと思っています。

答えて

7

ファイルがprintnumbers.pyの場合、モジュールはprintnumbers.pyなし)と呼ばれます。従ってsys.pathの端部に

import printnumbers 

import sys 
sys.path.append('/home/jake/Documents') 

追加'/home/jake/Documents'を使用します。 sys.pathにリストされているディレクトリは、import文がPythonでモジュールを検索するたびに検索されます(リストされた順番で)。 (Pythonは常にモジュールをインポートするsys.pathディレクトリを検索する必要はありませんので、すでにインポートモジュールは...、sys.modulesにキャッシュされている)

ファイル/home/jake/Documents/printnumbers.pyを持っているのであれば、その後、import printnumbersは、Pythonがそれをインポートするようになりますが提供されますsys.pathの先に/home/jake/Documents/のディレクトリにあるprintnumbers.pyという名前のファイルはありません。

ディレクトリをsys.pathに挿入することは、モジュールを検索するためにPythonを設定する通常の方法ではありません。通常は、PYTHONPATH環境変数に/home/jake/Documentsを追加することをお勧めします。 sys.pathは、PYTHONPATH環境変数にリストされているディレクトリを自動的にインクルードします。

+0

男私は完全なダンサーのように感じることができました。私は私が見ていた例の最後に「.py」拡張子が見えました。ちょうどあなたのソリューションをテストし、それは今すぐ素晴らしく動作します。助けてくれてありがとうございました。 – Ragecoder

+0

これは今、大きな意味があります。しかし、拡張機能を追加するとインポートが失敗するのはなぜですか?私は今好奇心が強い。これは、私がPythonモジュールとしてインポートされた型のないファイルを持つことができるということですか? – Ragecoder

+0

いいえ、.txtや.jpgをPythonモジュールとしてインポートできませんでした。バックグラウンドのPythonは、現在のディレクトリ内のモジュール名が.py型であるかどうかを判断し、それに応じてインポートします。他のものをインポートしようとすると、インポートエラーが発生します。 – TheLazyScripter

1

ともう一つ、あなたの空い__初期化__.pyファイルを使用したディレクトリ は(Pythonパッケージとしてそれを作るためだけにしてPythonはこの ディレクトリ以外のPythonパッケージのディレクトリであることを知っているだろう通常の ディレクトリ)。したがって、別のディレクトリ からそのパッケージからモジュールをインポートすることができます。

関連する問題