0

vtkPython サイト パッケージにモジュールがあり、独自の Python ディストリビューションを持つアプリケーションからこのモジュールにアクセスしたいとします。

私は次のようなことをいくつか試しました:

import sys
sys.path.append("C:\Python27\Lib\site-packages")
sys.path.append("C:\Python27\Lib\site-packages\vtk")
import vtk
lut = vtk.vtkLookupTable()

しかし、モジュールを正しくロードできません:

AttributeError: 'module' object has no attribute 'vtkLookupTable'

デフォルトのPythonインタープリターから同じことをすれば、すべて問題ありません。

今、私vtkはこのアプリケーションサイトパッケージで、単純な__init__.py解決パスを使用してラッパーを作成することを考えました。これにより、import vtkうまくいけば正しいものが読み込まれますが、これを機能させるためのPythonパッケージの経験はありません

簡単に言えば、参照パッケージと単純な__init__.pyファイルと同じ名前のフォルダーを作成して、任意のフォルダーからモジュールをPythonサイトパッケージにラップするにはどうすればよいですか?

4

2 に答える 2

3

次の行を削除します。

sys.path.append("C:\Python27\Lib\site-packages")
sys.path.append("C:\Python27\Lib\site-packages\vtk")

site-packagesすでに python パスにあります。そのpythonパス内(特に最初のレベル)にパッケージ/フォルダーを追加すると、インポートが台無しになります。vtkこのパッケージはどのように構成されていますか?

/path/to/site-packages/
                      vtk/
                          __init__.py
                          vtk.py

この場合、vtk 内の関数にアクセスするには:

from vtk import vtk
lut = vtk.vtkLookupTable()

それはすべて、フォルダーの配置方法にかかっています。これを行うこともできます:

import vtk
lut = vtk.vtk.vtkLookupTable()

Python のインポートがどのように機能するかを理解していないという理由だけで、プロキシ モジュールを作成して Python のインポートをハックしようとしないでください。エラーは非常に明確でした。属性vtkLookupTableは、インポートしたものには存在しませんでした。間違ったものをインポートしました。修理する。

sys.path手動で操作する必要はほとんどありません。必要な場合は、それが正しい理由であることを知っておく必要があります。完全に理解していないことを回避しないでください。

初めてPythonを使い始めたとき、Pythonのパスに問題がありました。イライラするかもしれませんが、それがどのように機能するかを理解することは必要です. あなたを助けることができるのは、次のようなものです:

import vtk
print dir(vtk)

これにより、vtk の属性が出力されるため、このような場合に正しいものをインポートしていると思われる場合に、パッケージまたはモジュールの内容を正確に調べることができます。

あなたの質問を読み直した後、これはあなたが話している別のpythonインストールのようです。答えは、このパッケージを他の python インストールにインストールするか、フォルダーをアプリケーションのルート レベルにコピーして、このパッケージを最上位のインポートとして含めることです。

于 2012-06-23T02:12:46.167 に答える
0

"C:\Python27\Lib\site-packages"すでに python パスにあります。したがって、パスの追加は不要です。削除する:

import sys
sys.path.append("C:\Python27\Lib\site-packages")
sys.path.append("C:\Python27\Lib\site-packages\vtk")

vtk\に ' 'という名前の新しいフォルダを作成し、次にin"C:\Python27\Lib\site-packages"という名前の新しい python ファイルを作成し、独自のモジュールをこのディレクトリに配置します。使用:__init__.py"C:\Python27\Lib\site-packages\vtk"vtk.py

import vtk

また

from vtk import vtk

独自のモジュールを使用します。

于 2012-06-23T03:06:46.090 に答える