Menggunakan PyQGIS, ArcPy, NumPy, SciPy Together di Windows Command Prompt

8

Saya mengalami masalah kecil ini ketika saya mencari untuk mengakses instalasi python dari ArcGIS, QGIS, Anaconda (dikutip karena SciPy & NumPy datang dengan itu), dan versi 2.7 vs 3. Kadang-kadang, saya merasa lebih mudah untuk hanya masuk ke Windows ' Command Promptke lakukan sedikit kerja cepat alih-alih membuka program GIS atau python IDE untuk mengakses prompt interaktif.

Alih - alih menavigasi ke setiap folder, mengatur pintasan, atau mengganti PATHvariabel lingkungan, saya ingin cara berbeda untuk mengakses setiap instalasi python melalui Command Prompt.

Edit

Profesional GIS yang menggunakan python untuk pekerjaan mereka akhirnya harus mengakses setiap instalasi secara manual untuk mengakses fitur yang ada di dalamnya. Daripada menunggu sesuatu seperti ArcMap dimuat, umumnya lebih cepat untuk menekan winkey -r + cmd Anda dan mengetikkan pythonCommand Prompt Anda untuk memulai konsol python. Jika Anda ingin menggunakan ArcPyuntuk memproyeksi ulang shapefile, Anda perlu membuka konsol python Anda, yang terhubung dengannya ArcPy. Jika Anda ingin menggunakan alat dari PyQGISkarena Anda tidak memiliki lisensi ESRI yang sesuai, Anda perlu menemukan python.exeyang terkait dengan modul-modul itu. Hal ini dapat menjadi sakit ketika Anda mencoba untuk melakukan pekerjaan di ArcPy, PyQGIS, NumPy, atauSciPy tanpa semua pustaka diinstal secara terpadu sebagai satu instalasi python.

Biasanya, Anda terikat oleh Pathvariabel Anda di mana instalasi python adalah default Anda saat di Command Prompt. Pertanyaan ini dan jawaban berikut terlihat untuk membahas bagaimana para profesional GIS mungkin dapat memanfaatkan beberapa instalasi python bersama dalam satu lingkungan. IDE Python menargetkan instalasi python tunggal dan memerlukan perubahan pengaturan untuk memanfaatkan yang berbeda. Sebagai contoh, PyScripterinstal saya menargetkan instalasi ArcGIS saya dari Python. Jadi, jika saya ingin menggunakan PyQGISmodul saya , saya perlu membuka QGIS atau mengubah pengaturan PyScripter.

Saat menulis modul / skrip lengkap, masuk akal untuk menargetkan satu per satu. Dengan begitu Anda mungkin mendapatkan semacam penyelesaian kode terjadi. Namun , ketika Anda baru menggunakan beberapa alat di setiap instalasi untuk memanipulasi data set, itu akan jauh lebih baik jika Anda bisa konsol python cepat sandal / instalasi dalam satu layar alias yang Command Prompt.

Kepada mereka yang memilih untuk menutup / di luar topik ...

Meskipun ini jelas berlaku untuk apa pun yang dilampirkan bahasa python , untuk pengguna GIS yang miskin yang tidak mampu membeli ekstensi ESRI untuk alat analisis data, ini berfungsi sebagai cara bagi mereka untuk menyederhanakan hidup mereka. Seperti yang ditunjukkan beberapa jawaban, dapat menyesuaikan proses ini lebih lanjut, misalnya menambahkan argumen ke .cmdfile, berpotensi dapat sangat bermanfaat jika seseorang menjalankan proses kustom. Ada potensi bagi pengguna GIS / komputer yang lebih cerdas untuk dapat mengatur .cmdfile kustom untuk dengan cepat menjalankan proses tanpa harus melalui kerepotan berurusan dengan berbagai instalasi perangkat lunak IDE / GIS dll.

Satu-satunya downside untuk menjalankan konsol python di dalam Command Promptadalah hilangnya penyelesaian kode. Namun, jika Anda menjalankan sesuatu yang cukup, seperti arcpy.AddField_management(), penyelesaian kode hanya akan menghalangi.

Branco
sumber
2
Saya ingin tahu apakah ini akan lebih cocok untuk SuperUser. Ini benar-benar tidak ada hubungannya dengan GIS, selain tangensial melibatkan runtime yang biasa digunakan dalam GIS. Tentu saja, saya pikir Anda akan lebih mungkin untuk mendapatkan jawaban terbaik tentang SuperUser daripada yang Anda lakukan di sini.
jpmc26
1
@ jpmc26. Mungkin, tapi saya pikir itu SIG yang tepat karena saya secara khusus membandingkan QGIS dan ArcGIS dan menggunakan beberapa instalasi python bersama dalam SIG bisa menjadi hal yang umum. Memang berkembang sedikit lebih jauh, tetapi karena banyak jawaban diberi kode jawaban di sini, sepertinya cocok.
Branco
Biasanya ada pertanyaan di sisi ini mengenai pemasangan dan konfigurasi perangkat lunak GIS. Ini berlaku sama di mana kami meminta 2 instalasi python berbeda dari 2 komponen perangkat lunak GIS yang berbeda melalui Command Prompt. Meskipun, itu dapat dengan mudah diperluas ke Prompt Perintah lainnya, tetapi maksud awalnya adalah untuk mengkonfigurasi akses cepat ke instalasi python QGIS / ESRI tanpa kerumitan.
Branco

Jawaban:

9

Saya akan menawarkan alternatif yang menurut saya sedikit lebih bersih. Ini terinspirasi oleh kombinasi saran Josef dan pola umum pada sistem * nix.

  1. Mulailah dengan membuat direktori. Direktori ini akan digunakan untuk menyimpan file "alias" untuk setiap instalasi. Jadi sesuatu seperti C:\Python\aliasesatau C:\PythonAliasesakan berhasil.

  2. Selanjutnya buat skrip untuk setiap instalasi. Setiap skrip pada dasarnya alias salah satu instalasi Python yang perlu Anda rujuk dengan hanya memanggil executable-nya. Misalnya, konten akan terlihat seperti ini untuk instalasi QGIS:

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

    Simpan dengan nama deskriptif ke dalam folder yang Anda buat, seperti pyqgis.cmdatau pyqgis.bat.

    The %*melewati semua argumen yang diberikan kepada script ke dalam Python executable sebagai gantinya. Jadi Anda bisa melakukan ini:

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

    ( @Simbol hanya mencegah Prompt Perintah agar tidak perlu mengulangi perintah.)

  3. Tambahkan direktori yang berisi skrip ini ke PATH. Sekarang Anda dapat memanggil mereka tanpa path lengkap:

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

Ini memiliki beberapa keunggulan, menurut saya:

  • Tidak ada pengelolaan beberapa variabel lingkungan sistem lebar. (Karena mari kita hadapi itu, antarmuka Windows untuk melakukan itu paling menjengkelkan.) Anda cukup memodifikasi PATHsekali. Mendapatkan instalasi baru PATHatau menghapus yang lama adalah manajemen file yang sederhana.
  • Semua alias Anda tercantum di satu tempat. Mencari tahu nama apa yang Anda miliki adalah daftar direktori sederhana. (Ini akan sangat membantu jika Anda tidak dapat mengingat namanya.)
  • Mengutip masalah cenderung muncul
  • Ini mencerminkan pola yang sudah ada, dan lebih mudah dipahami / dikenali. Bukan hal yang aneh untuk melihat alias python2atau python3di bindirektori pada mesin * nix. Walaupun ini tidak persis sama, saya pikir itu cukup mirip sehingga akan masuk akal bagi seseorang mengetahui bahwa ini dilakukan pada sistem * nix.

Saya tidak sepenuhnya puas dengan pengaturan ini, tetapi saya tidak berpikir Anda bisa melakukan lebih baik pada Windows.

jpmc26
sumber
Saya suka proses ini. Saya, seperti kebanyakan pengguna Windows pada umumnya, jangan terlalu banyak berkelana ke variabel sistem, jalur, dan hal-hal lain kecuali ada yang memberitahuku. Saya hanya mencoba untuk melompat antara python QGIS dan Anaconda tadi malam dan menemukan jalan pintas kecil saya. Ini mungkin solusi jangka panjang yang lebih baik.
Branco
7

Saya memutuskan untuk bermain - main dengan System Variablesbagian dari Environment Variablespengaturan untuk melihat apakah saya dapat membuatnya lebih mudah untuk mengakses setiap instalasi python saat di Windows Command Prompt. Saya menemukan saya dapat menambahkan yang baru System Variabledan menyebutnya dari Command Promptuntuk mengakses instalasi python apa pun yang saya inginkan.

Beberapa contoh:

Variabel = PyQGIS Nilai ="C:\Program Files\QGIS Dufour\bin\Python.exe"

Saya meninggalkan tanda kutip ganda di sana sehingga saya tidak perlu mengutip spasi Command Promptuntuk menjaga seluruh string sebagai satu argumen

Variabel = Anaconda Nilai =AnacondaDirectory\Python.exe

Bagaimana saya mengakses instalasi saya dari scipy / numpy / etc

Variabel = Python3 Nilai =C:\Python34\Python.exe

Python 3 menyertakan peluncur yang memungkinkan Anda menentukan versi ... >> py -3untuk python 3 ... info di sini

Untuk memanggil System Variabledi Command Prompt:

Saat Anda berada di Command Prompt, Anda dapat memanggil variabel Anda dengan mengetikkan %VariableName%ke command prompt. Untuk setiap pemasangan python, ia akan menuju ke {Directory}\Python.exeuntuk membuka interpreter interaktif. Jika Anda tidak mengutip Nilai yang memiliki spasi, Anda perlu menambahkan kutipan di sekitar panggilan variabel Anda, mis. "%VariableValueWithSpaces%". Tanpa tanda kutip, garis akan terbelah oleh spasi sehingga program Anda tidak akan mulai.

Saya yakin mungkin ada cara yang lebih mudah untuk melakukan hal-hal, tetapi saya menemukan ini menjadi sedikit pengetahuan yang berguna jika Anda sangat suka menggunakan Command Promptdi Windows. Saya suka kemampuan untuk mengakses instalasi python individu hanya dengan memberikan nama variabel yang berbeda.

Branco
sumber
Atau, apa yang saya lakukan: memiliki file .cmd untuk setiap instalasi yang menetapkan path dan mungkin hal-hal lain di path. Jadi misalkan punya python34.cmd di path Anda yang berisi @set PATH=C:\Python34\;%PATH%. Kemudian dengan memasukkan python34 akan membuat python ini tersedia.
Josef mengatakan Reinstate Monica
Apakah maksud Anda memilikinya sebagai variabel sistem lain? Atau tambahkan lokasi python34.cmd ke Pathvariabel Anda ?
Branco
Aku berarti Anda membuat file cmd yang akan pra pend lokasi python.exe ke jalan Anda. Anda meletakkan file cmd ini di mana saja di jalur Anda. Anda bisa membuat folder baru dan menambahkannya ke variabel path. Anda kemudian dapat menjalankan python34 dari setiap shell, karena itu ada di path. Python34.cmd kemudian akan mengubah path sehingga versi python yang Anda inginkan adalah hal pertama di path untuk sesi shell saat ini (dan semua sesi anak) saja.
Josef mengatakan Reinstate Monica
Oke, mengerti ... Itu juga ide yang cukup bagus terutama jika Anda menambahkan pengaturan ekstra / perubahan pada file .cmd.
Branco