Pythonコンソールからスクリプトをインポートできないのはなぜですか?


9

私はqgis pythonコンソールで作業しています。通常、すべてのPythonスクリプトを〜/ Scripts / pythonに保存します。.bashrcでPYTHONPATHを〜/ Scripts / pythonに設定していますが、QGIS内のコンソールからスクリプトをインポートすることができません。

これは、Create_Figures_2Dというスクリプトをインポートしようとしたときのエラーです。

import Create_Figures_2D
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/lib/python2.7/dist-packages/qgis/utils.py", line 309, in _import
    mod = _builtin_import(name, globals, locals, fromlist, level)
ImportError: No module named Create_Figures_2D

pygisのPYTHONPATHを設定するにはどうすればよいですか?


1
~/Scripts/python通常私のために働くPATHに追加してみてください。チェックするimport os; os.path
Nathan W

回答:


11

Pythonコンソールで、次を実行します。

import sys
sys.path

PYTHONPATHエントリがリストされているかどうかを確認します。その環境変数はQGISの実行中のPythonではおそらく利用できないため、私はそうは思いません。

スクリプトフォルダーをコンソールのsys.pathに追加するには、通常のappend()を実行します。

sys.path.append('~/Scripts/python')

その後、そのコンソールセッション用にモジュールをそこからインポートできるはずです。〜をユーザーの完全なホームパスに拡張することをお勧めします(Pythonが〜の拡張を行うかどうかはわかりません)。

編集:〜展開 sys.pathでサポートされていないようです(少なくともMacでは)。

QGISのPythonコンソールは、Pythonモジュール「console.py」によって作成されます。したがって、より永続的な方法でsys.pathにカスタムパスを追加する場合は、console.pyファイルを編集し、モジュールの後にsys.path.append( 'path / to / my / scripts')ステートメントを追加しますインポートセクション。

console.pyはここにあります(Macの場合、KyngChaos.com QGISパッケージを使用):

/Applications/QGIS.app/Contents/Resources/python/qgis/console.py

もちろん、これは消去されるハックであり、QGIS.appアップデートでやり直す必要があります。

実行中のQGIS Pythonインタープリターのsys.pathに対する調整は、他のプラグインでも利用できます。

より安全な代替策は、必要なときにいつでもsys.path.append()を読み込んで実行する単純な開発PyQGISプラグインを作成することです。また、プラグインunload()のsys.pathからそのパスを削除することもできます。そのようなプラグインのsys.path調整がすでにロードされたコンソールで利用できるかどうかはテストしていません(私は推測しているでしょう、そうでしょう)。


これまでのところ、あなたのハックは私にとってはうまく機能しています。ありがとうございました。ubuntu12.04では、ファイルは/usr/share/pyshared/qgis/console.pyにあります
Renaud

優秀な!ちなみに、追加されたパスをPythonコンソールに認識させるには、Windows 7でQGISを再起動する必要がありました。
Dirk
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.