WindowsコマンドプロンプトでのPyQGIS、ArcPy、NumPy、SciPyの併用


8

ArcGIS、QGIS、Anaconda(SciPyとNumPyが付属しているため引用)、およびバージョン2.7と3からpythonインストールにアクセスしようとしていたときに、このわずかな問題に遭遇Command Promptしました。インタラクティブプロンプトにアクセスするために、GISプログラムやPython IDEを開く代わりに、少し手間をかけずに作業します。

各フォルダーに移動したり、ショートカットを設定したり、PATH環境変数を切り替えたりする代わりに、を介して各pythonインストールにアクセスする別の方法が必要Command Promptでした。

編集する

作業にpythonを使用するGIS専門家は、内部に保持されている機能にアクセスするために、各インストールに手動でアクセスする必要があります。ArcMapなどの読み込みを待つ代わりに、通常、winkey -r + cmd押しpythonてコマンドプロンプトに入力し、Pythonコンソールを起動する方がはるかに高速です。を使用ArcPyしてシェープファイルを再投影する場合は、にリンクされているPythonコンソールを開く必要がありますArcPyPyQGIS適切なESRIライセンスがないためにからツールを使用する場合python.exeは、それらのモジュールにリンクされているツールを見つける必要があります。 これは、痛みをすることができ、あなたがで仕事をしようとしているArcPyPyQGISNumPy、またはSciPy すべてのライブラリを1つのPythonインストールとしてまとめてインストールする必要はありません。

通常、PathPythonのインストールがでのデフォルトである変数にバインドされますCommand Prompt。この質問とそれに続く回答は、GIS専門家が単一の環境で複数のpythonインストールを一緒に利用する方法を取り上げています。Python IDEは単一のpythonインストールを対象としており、異なる設定を利用するには設定の変更が必要です。たとえば、私のPyScripterインストールはPythonのArcGISインストールを対象としています。したがって、自分のPyQGISモジュールを利用したい場合は、QGISを開くか、で設定を変更する必要がありますPyScripter

モジュール/フルスクリプトを作成する場合、1つを個別に対象とすることは理にかなっています。そうすることで、ある種のコード補完が発生する可能性があります。 しかし、あなただけのデータセットを操作するために、インストールごとにいくつかのツールを利用しているときに、単一の画面内で素早くフリップのpythonコンソール/インストールすることができた場合、それは非常に良くなり別名Command Prompt

トピックを閉じる/オフトピックに投票する人へ...

これは明らかにpython言語が付属しているすべてのものに当てはまりますが、データ分析ツール用のESRI拡張機能を購入する余裕のない貧しいGISユーザーにとって、それは彼らの生活を簡素化する方法として役立ちます。いくつかの回答が示しているように、たとえば.cmdファイルに引数を追加するなど、このプロセスをさらにカスタマイズできることは、誰かがカスタムプロセスを実行している場合に非常に役立ちます。より知識のあるGIS /コンピューターユーザー.cmdは、さまざまなIDE / GISソフトウェアのインストールなどに煩わされることなく、プロセスをすばやく実行するためのカスタムファイルをセットアップできる可能性があります。

内でPythonコンソールを実行することの唯一の欠点Command Promptは、コード補完が失われることです。ただし、などの十分なものを実行するarcpy.AddField_management()と、コード補完が邪魔になります。


2
これはSuperUserの方が適切かと思います。これは、GISで一般的に使用されるランタイムに接線的に関与する以外は、実際にはGISとは何の関係もありません。確かに、SuperUserに関しては、ここでの回答よりも最良の回答を得る可能性が高いと思います。
jpmc26 2015

1
@ jpmc26。たぶん、しかし私はQGISとArcGISを具体的に比較し、GISで複数のPythonインストールを一緒に使用することは一般的である可能性があるため、GISは適切だと思います。少し拡張されましたが、ここではコード化された回答の多くがコード化されているため、適切と思われます。
ブランコ

GISソフトウェアのインストールと構成に関しては、この面でよくある質問があります。これは、コマンドプロンプトを介して2つの異なるGISソフトウェアコンポーネントから2つの異なるpythonインストールを呼び出す場合も同様です。とはいえ、他のコマンドプロンプトに簡単に拡張できますが、本来の目的は、手間をかけずにQGIS / ESRI pythonインストールへのクイックアクセスを構成することです。
ブランコ

回答:


9

私は少しきれいだと思う代替案を提供するつもりです。Josefの提案と* nixシステムでの一般的なパターン組み合わせに触発されました。

  1. まず、ディレクトリを作成します。このディレクトリは、インストールごとに「エイリアス」ファイルを保持するために使用されます。ので、C:\Python\aliasesまたはのようなものC:\PythonAliasesが動作します。

  2. 次に、インストールごとにスクリプトを作成します。各スクリプトは基本的に、実行可能ファイルを呼び出すだけで参照する必要があるPythonインストールの1つにエイリアスを設定します。たとえば、QGISインストールの場合、コンテンツは次のようになります。

    @"C:\Program Files\QGIS Dufour\bin\Python.exe" %*

    pyqgis.cmdまたはなどの作成したフォルダに、わかりやすい名前で保存しますpyqgis.bat

    %*代わりにPythonの実行可能ファイルにスクリプトに与えられたすべての引数を渡します。だからあなたはこれを行うことができます:

    C:\>C:\Python\aliases\pyqgis.cmd -c "print('Hello, world!')"
    Hello, world!

    (この@記号は、コマンドプロンプトが不必要にコマンドをエコーするのを防ぐだけです。)

  3. これらのスクリプトを含むディレクトリをに追加しPATHます。これで、フルパスなしでそれらを呼び出すことができます:

    C:\>pyqgis -c "print('Hello, world!')"
    Hello, world!

私の意見では、これにはいくつかの利点があります。

  • いくつかのシステム全体の環境変数を管理する必要はありません。(正直に言うと、それを行うためのWindowsインターフェースはせいぜい迷惑です。)PATH一度変更するだけです。新しいインストールをPATH古いものにインストールしたり、削除したりするのは簡単なファイル管理です。
  • すべてのエイリアスが1か所にリストされます。あなたが利用できる名前が何であるかを理解することは、簡単なディレクトリリストから離れています。(これは、名前を思い出せない場合に特に役立ちます。)
  • 引用問題が発生しにくい
  • これは既存のパターンを反映しているため、より簡単に理解/認識されます。それは次のようにエイリアスを見ることも珍しくありませんpython2し、python3中にbin* nixのマシン上のディレクトリ。これはまったく同じではありませんが、* nixシステムで行われていることを知っている人にはある程度理解できるほど十分に類似していると思います。

私はこのセットアップに完全に満足しているわけではありませんが、Windowsでもっとうまくできるとは思いません。


私はこのプロセスが好きです。私は、ほとんどの一般的なWindowsユーザーと同様に、何か指示されない限り、システム変数、パス、およびその他のものにあまり手を入れません。私はちょうど昨夜QGIS pythonとAnacondaの間を行き来しようとしていて、私の小さなショートカットを見つけました。これはおそらくより良い長期的な解決策です。
ブランコ

7

設定のSystem Variables一部をEnvironment Variablesいじって、内にある各pythonインストールに簡単にアクセスできるかどうかを確認することにしましたCommand Prompt。私は新しいものSystem Variableを追加し、それをから呼び出して、Command Prompt必要なpythonインストールにアクセスできることを発見しました。

いくつかの例:

変数 = PyQGIS ="C:\Program Files\QGIS Dufour\bin\Python.exe"

二重引用符をそこに残したのでCommand Prompt、文字列全体を単一の引数としてまとめるために、スペースを引用符で囲む必要はありません。

変数 = Anaconda =AnacondaDirectory\Python.exe

scipy / numpy / etcのインストールにアクセスする方法

変数 = Python3 =C:\Python34\Python.exe

Python 3には、バージョンを指定できるランチャーが含まれています... >> py -3Python 3の場合... 情報はこちら

でを呼び出すSystem VariableにはCommand Prompt

にいるときは、コマンドプロンプトにCommand Prompt入力%VariableName%して変数を呼び出すことができます。pythonのインストールごとに、に移動し{Directory}\Python.exeてインタラクティブインタープリターを開きます。スペースがあるを引用しなかった場合は、変数呼び出しを引用符で囲む必要があります。"%VariableValueWithSpaces%"。引用符がないと、行はスペースで区切られるため、プログラムは起動しません。

おそらくもっと簡単な方法があると思いますが、特にCommand PromptWindows でを使用するのが好きな場合は、これが役に立つ知識であることがわかりました。異なる変数名を指定するだけで、個々のPythonインストールにアクセスできる機能が気に入っています。


または、私が行うこと:インストールごとに.cmdファイルを作成し、パスと、場合によってはパス内の他の項目を設定します。したがって、たとえばを含むパスにpython34.cmdを含めます@set PATH=C:\Python34\;%PATH%。次に、python34と入力するだけで、このpythonが使用可能になります。
ジョセフ氏は、2015

別のシステム変数として持っているということですか?または、python34.cmdの場所をPath変数に追加しますか?
ブランコ

私はあなたがしますCMDファイルの作成を意味する事前あなたのパスにpython.exeの場所を保留します。このcmdファイルをパスの任意の場所に配置します。新しいフォルダを作成して、パス変数の前に追加できます。パスにあるため、すべてのシェルからpython34を実行できます。次に、Python34.cmdはパスを変更します。これにより、現在のシェルセッション(およびすべての子セッション)のみのパスで、必要なpythonバージョンが最初になります。
ジョセフ氏は、モニカを

OK、わかりました...特に.cmdファイルに追加の設定/変更を追加する場合も、これはかなり良いアイデアです。
ブランコ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.