2009-07-28 17 views
0

私はいくつかのpythonモジュールをWindowsマシンの共有フォルダに持っています。共有フォルダにpythonモジュールをインポートするには?

ファイルはmtl12366150の\テスト\のmymodule.pyに

os.path.existsを\され、このパスが有効であると言われます。

私はsys.pathに\ mtl12366150 \ testというフォルダを追加しました(そして、このパスが有効であることをos.path.existsが教えてくれます)。

mymoduleをインポートしようとすると、モジュールが存在しないというエラーが表示されます。

共有パスにあるモジュールをインポートする方法はありますか?

+0

私は私の問題にいくつかのコンテキストを追加する必要があります:) 私たちのアプリケーションは、ユーザーにいくつかのユーティリティスクリプトを提供しています。これらのスクリプトを共有フォルダに入れて、すべてのユーザーが簡単にアクセスできるようにします。 スラッシュを使用しようとしました。それはうまくいかなかった。 私はPYTHONPATHを修正しようとしました。それはうまくいかなかった。 パスが正しくエスケープされていると確信しています。 os.path.existsは、パスが有効であることを確認します。 私はこのフォルダ内のファイルを実行することができます(またはopen()を使用することができます) 私の唯一の問題は、このパスからモジュールをインポートすることです! –

答えて

0

python項目をインポートするには、有効なpythonパッケージであることを示すために、その上の各フォルダに__init__.pyファイルが必要です。

__init__.pyファイルは空でも構いません。構造を表示するだけです。

\mtl12366150 
    __init__.py 
    \test 
    __init__.py 
     \mymodule.py 
+0

これは当てはまりません。append( "mtl12366150/test")、これらのディレクトリはパッケージである必要はありません。 – bstpierre

+0

彼はパッケージディレクトリではなく、1つのファイルを直接インポートしています。 __init__は関係ありません。 –

1

追加のsys.pathコンポーネントで生の文字列を使用するか、バックスラッシュをエスケープするのを忘れましたか? 「\ t」はタブであるのに対して、r「\ t」または「\ t」はバックスラッシュの後にタブが続くことを覚えておいてください。

ほとんどのアプリケーションでは、Windowsパスであってもバックスラッシュではなく、スラッシュを使用する方が効果的です。ほとんどのWindows APIはそれをうまく受け入れます。それ以外の場合は、生の文字列を使用するように注意してください。

[簡単なPythonモジュール上のディレクトリに__init__.pyファイルを追加する必要はありません]

-2

を「私は...のsys.pathに付加」しないでください。

PYTHONPATH環境変数をアプリケーション外から設定します。

+0

いいえ、sys.pathに追加する完全な正当な理由があります。 *パスを前に*置かないでください。ユーザが設定したPYTHONPATHを上書きします。それらは優先すべきです。いずれにせよ、これは質問には関係ありません。 –

+0

@グレン・メイナード:「質問とは無関係」かもしれない。おそらく、sys.path **の更新を試みたのは**問題です。 –

1

あなたは、os.path.exists()はパスがあると言っていますが、あなたは\\をエスケープしたことを絶対に確信していますか?これを試してください:

sys.path.append('\\mtl12366150\\tes') 
+0

本当にバックスラッシュを使用する場合は、r "\ mtl12366150 \ test"を使用してください。もちろん、スラッシュを使用することをお勧めします。 –

0

S.Lottが述べたように、最良の方法はPYTHONPATH環境変数を設定することです。私は便利なウィンドウボックスがありませんが、コマンドプロンプトから次のようになります。

c:> SET PYTHONPATH=c:\mtl12366150\test 
c:> python 
>>> import mymodule 
>>> 
+0

すべてを上書きするのではなく、 'PYTHONPATH'に追加したくないですか? –

+0

@エヴァンスFosmark: 80%の時間、それは使用されていません。ほとんどのパッケージはlib/site-packagesにインストールされています。実際には、既存のシステム全体のPYTHONPATHが存在することは稀です。システム全体のパスを設定するのではなく、一般的にパッケージをインストールするだけです。 –

0

私は答えを見つけたと思います。私はPython 2.6.1を使用していましたが、Python 2.6.2ではこれが動作します。私はpython 2.5.4と同じ欠陥のある動作をしました。

関連する問題