2012-04-08 9 views
1

他のいくつかのPythonモジュールを含むaフォルダから必要なモジュールは1つまたは2つだけです。私のパスにフォルダを追加すると、そのフォルダ内のすべてのモジュールを効果的に利用できるようになります。しかし、私は欲しくないいくつかの時代遅れのモジュールがあります。それらのモジュールの特定のサブセットを私に利用可能にすることは可能ですか?Python:sys.path内のフォルダから特定のモジュールのみを持つことは可能ですか?

+0

古くなったものを削除しますか? – miku

+0

古いものをインポートしないでください。 –

+0

古いものを別のフォルダに移動しますか? – unsym

答えて

1

他にあなたが

import X 

あなただけインポートモジュールX.の何もない場合は。あなたのpythonパス上にあるものは、自動的にインポートされるのと同じではありません(ちょうどのインポート可能なです)。参照:

あなたの質問を読ん
+0

私は実際にインポートすることができますが、実際にインポートすることはできません。たとえば、私はvirtualenvにnumpyの個人用インストールがあり、システムには古いバージョンが全世界にあります。私はグローバルライブラリからPyQtだけを望んでいますが、古いバージョンのnumpyがグローバルバージョンと競合するのを防ぐことは望ましくありません。 –

2

私はあなたがそれから、モジュールのカップルを必要とするので

  1. は、あなたがあなたのPYTHONPATH内のフォルダを含めていることを理解しています。
  2. 使用しているバージョンと比較して古いモジュールが含まれているため、間違ったライブラリのインポートを終了させたくありません。

あなたには2つのオプションがあります。

  1. このフォルダの末尾がsys.pathであることを確認してください。これにより、新しくインクルードされたフォルダにすでに存在しているモジュールが、その特定の場所からインポートされることはありません。
  2. (* nixのみ)別のフォルダを作成し、興味のあるファイルへのシンボリックリンクを作成します。作成した別のフォルダを含める必要があります。

あなたのコメントを読むと、私は示唆し、最良のオプションは、スクリプトのどこかに以下の行を追加することですが、あなたはimport`前

import sys 
sys.path.append('/whatever') 
+0

はい、これはまさに私が求めていることです。とにかく私が含まれているフォルダがsys.pathの最後にあることを確認するには? たとえば、PYTHONPATHのディレクトリが追加されるタイミングは明確ですか? –

+0

@ChristopherDorian:sys.pathにパスをどのように追加する予定ですか?あなたが答えが簡単であることを明確にすれば。 1つの明白な方法は 'import sys \ nsys.path.append("/whatever ")'です。これにより、ライブラリが検索パスの最後にあることが保証されます。あなたがやっている他の方法はありますか? – Abhijit

+0

今、私はPYTHONPATHを使ってフォルダを追加しています。これまでのところsys.pathの自分のローカルライブラリの下に表示されていますが、これが常に正しいかどうかはわかりません。 –

1

は、新しいディレクトリを作成します。インポートするモジュールごとに、実際のモジュールを指し示すシンボリックリンク(ln -s)を追加します。あなたのパスに新しいディレクトリを追加すると、あなたのインクルード注文でゲームをする必要はありません。

mkdir ./mymods 
export PYTHONPATH="$PYTHONPATH":`pwd`/mymods 
cd mymods 
ln -s ../allmods/module1.py 
ln -s ../allmods/module2.py 
関連する問題