Sử dụng PyQGIS, ArcPy, NumPy, SciPy cùng nhau trong Windows Command Prompt


8

Tôi chạy qua vấn đề nhẹ này khi tôi đã tìm cách để cài đặt truy cập python từ ArcGIS, QGIS, Anaconda (trích dẫn bởi vì scipy & NumPy đi kèm với nó), và phiên bản 2.7 vs 3. Đôi khi, tôi tìm thấy nó dễ dàng hơn để chỉ cần bật vào Windows' Command Promptđể làm một chút công việc nhanh chóng thay vì mở một chương trình GIS hoặc IDE python để truy cập vào dấu nhắc tương tác.

Thay vì điều hướng đến từng thư mục, cài đặt các phím tắt hoặc tắt PATHbiến môi trường, tôi muốn một cách khác nhau để truy cập từng cài đặt python thông qua Command Prompt.

Biên tập

Các chuyên gia về GIS sử dụng python cho công việc của họ cuối cùng phải truy cập từng cài đặt một cách thủ công để truy cập các tính năng được giữ trong đó. Thay vì chờ đợi một cái gì đó như ArcMap để tải, việc đánh winkey -r + cmd của bạn nhanh hơn và nhập pythonCommand Prompt để khởi động bảng điều khiển python. Nếu bạn muốn sử dụng ArcPyđể từ chối một shapefile, bạn cần mở giao diện điều khiển python của bạn, được liên kết đến ArcPy. Nếu bạn muốn sử dụng một công cụ từ PyQGISvì bạn không có giấy phép ESRI phù hợp, bạn cần tìm công cụ python.exeđược liên kết với các mô-đun đó. Đây có thể là một nỗi đau khi bạn đang cố gắng để làm việc trong ArcPy, PyQGIS, NumPy, hoặcSciPy mà không có tất cả các thư viện được cài đặt cố định như một cài đặt python.

Thông thường, bạn bị ràng buộc bởi Pathbiến của bạn mà cài đặt python là mặc định của bạn khi ở trong Command Prompt. Câu hỏi này và các câu trả lời sau đây nhằm giải quyết làm thế nào các chuyên gia về GIS có thể sử dụng nhiều cài đặt python cùng nhau trong một môi trường. IDE Python nhắm vào một phiên bản python duy nhất và yêu cầu thay đổi cài đặt để sử dụng các cài đặt khác nhau. Chẳng hạn, bản PyScriptercài đặt của tôi nhắm vào bản cài đặt ArcGIS của Python. Vì vậy, nếu tôi muốn sử dụng PyQGIScác mô-đun của mình , tôi cần mở QGIS hoặc thay đổi cài đặt trong PyScripter.

Khi viết các mô-đun / tập lệnh đầy đủ, sẽ hợp lý khi nhắm mục tiêu một cá nhân. Bằng cách đó bạn có thể nhận được một số loại hoàn thành mã xảy ra. Tuy nhiên , khi bạn chỉ cần sử dụng một số công cụ trong mỗi cài đặt để thao tác một tập dữ liệu, nó sẽ được nhiều đẹp hơn nếu bạn có thể python console nhanh chóng lật / cài đặt bên trong một màn hình duy nhất hay còn gọi là các Command Prompt.

Để những người bỏ phiếu đóng / lạc đề ...

Mặc dù điều này rõ ràng áp dụng cho bất kỳ thứ gì mà ngôn ngữ python được đính kèm , đối với người dùng GIS nghèo, những người không đủ khả năng mua các phần mở rộng ESRI cho các công cụ phân tích dữ liệu, nó phục vụ như một cách để họ đơn giản hóa cuộc sống của họ. Như một số câu trả lời đã chỉ ra, việc có thể tùy chỉnh quy trình này nhiều hơn, ví dụ: thêm đối số vào .cmdtệp, có khả năng có thể được sử dụng nhiều nếu ai đó đang chạy một quy trình tùy chỉnh. Có khả năng người dùng máy tính / máy tính thông thái hơn có thể thiết lập các .cmdtệp tùy chỉnh để nhanh chóng chạy các quy trình mà không phải trải qua quá trình xử lý các cài đặt phần mềm IDE / GIS khác nhau, v.v.

Nhược điểm duy nhất để chạy giao diện điều khiển python Command Promptlà mất hoàn thành mã. Tuy nhiên, nếu bạn chạy một cái gì đó đủ, chẳng hạn như arcpy.AddField_management(), việc hoàn thành mã sẽ cản trở.


2
Tôi tự hỏi nếu điều này sẽ phù hợp hơn trên SuperUser. Điều này thực sự không liên quan gì đến GIS, ngoài việc liên quan đến thời gian chạy thường được sử dụng trong GIS. Chắc chắn, tôi nghĩ rằng bạn sẽ có nhiều khả năng nhận được câu trả lời tốt nhất trên SuperUser hơn bạn sẽ ở đây.
jpmc26

1
@ jpmc26. Có thể, nhưng tôi nghĩ rằng nó phù hợp với GIS vì tôi đã so sánh cụ thể với QGIS và ArcGIS và sử dụng nhiều cài đặt python cùng nhau trong GIS có thể phổ biến. Nó đã mở rộng ra xa hơn một chút, nhưng vì rất nhiều câu trả lời được mã hóa ở đây, nên nó có vẻ phù hợp.
Branco

Có những câu hỏi thường gặp ở phía này về những điều liên quan đến cài đặt và cấu hình của phần mềm GIS. Điều này áp dụng tương tự khi chúng tôi gọi 2 cài đặt python khác nhau từ 2 thành phần phần mềm GIS khác nhau thông qua Dấu nhắc lệnh. Mặc dù, nó có thể dễ dàng được mở rộng thành những thứ khác Command Prompt, nhưng mục đích ban đầu là cấu hình truy cập nhanh vào các cài đặt python của QGIS / ESRI mà không gặp rắc rối.
Branco

Câu trả lời:


9

Tôi sẽ cung cấp một giải pháp thay thế mà tôi nghĩ là sạch sẽ hơn một chút. Nó lấy cảm hứng từ sự kết hợp giữa gợi ý của Josef và một mẫu chung trên các hệ thống * nix.

  1. Bắt đầu bằng cách tạo một thư mục. Thư mục này sẽ được sử dụng để giữ các tệp "bí danh" cho mỗi lần cài đặt. Vì vậy, một cái gì đó như C:\Python\aliaseshoặc C:\PythonAliasessẽ làm việc.

  2. Tiếp theo tạo một kịch bản cho mỗi cài đặt. Mỗi tập lệnh về cơ bản là bí danh một trong các bản cài đặt Python mà bạn cần tham chiếu bằng cách gọi hàm thực thi của nó. Ví dụ: nội dung sẽ như thế này cho bản cài đặt QGIS:

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

    Lưu nó với một tên mô tả vào thư mục bạn đã tạo, chẳng hạn như pyqgis.cmdhoặc pyqgis.bat.

    Thay vào đó, %*tất cả các đối số được đưa cho tập lệnh vào tệp thực thi Python. Vì vậy, bạn có thể làm điều này:

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

    ( @Biểu tượng chỉ ngăn lệnh Prompt không lặp lại lệnh một cách không cần thiết.)

  3. Thêm thư mục chứa các tập lệnh này vào PATH. Bây giờ bạn có thể gọi chúng mà không cần đường dẫn đầy đủ:

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

Điều này có một số lợi thế, theo ý kiến ​​của tôi:

  • Không quản lý một số biến môi trường toàn hệ thống. (Bởi vì hãy đối mặt với nó, giao diện Windows để làm điều đó thật khó chịu.) Bạn chỉ cần sửa đổi PATHmột lần. Nhận cài đặt mới vào PATHhoặc gỡ bỏ cài đặt cũ là quản lý tệp đơn giản.
  • Tất cả các bí danh của bạn được liệt kê ở một nơi. Tìm ra những cái tên bạn có sẵn là một danh sách thư mục đơn giản. (Điều này sẽ đặc biệt hữu ích nếu bạn không thể nhớ tên.)
  • Vấn đề trích dẫn ít có khả năng phát sinh
  • Điều này phản ánh một mô hình đã tồn tại và do đó dễ hiểu / dễ nhận biết hơn. Không có gì lạ khi thấy các bí danh như python2python3trong binthư mục trên máy * nix. Mặc dù điều này không hoàn toàn giống nhau, tôi nghĩ nó đủ tương tự để nó có ý nghĩa với ai đó biết rằng điều này được thực hiện trên các hệ thống * nix.

Tôi không hoàn toàn hài lòng với thiết lập này, nhưng tôi không nghĩ bạn có thể làm tốt hơn nhiều trên Windows.


Tôi thích quá trình này. Tôi, giống như hầu hết người dùng Windows điển hình, không tham gia quá nhiều vào các biến hệ thống, đường dẫn và các thứ khác trừ khi có gì đó cho tôi biết. Tôi chỉ cố gắng nhảy giữa con trăn QGIS và Anaconda đêm qua và tìm ra lối tắt nhỏ của mình. Đây có lẽ là giải pháp lâu dài tốt hơn.
Branco

7

Tôi quyết định chơi xung quanh với System Variablesmột phần của các Environment Variablescài đặt để xem liệu tôi có thể truy cập từng cài đặt python dễ dàng hơn khi ở trong Command Prompt. Tôi thấy tôi có thể thêm một cái mới System Variablevà gọi nó từ Command Promptđể truy cập bất cứ cài đặt python nào tôi muốn.

Vài ví dụ:

Biến = PyQGIS Giá trị ="C:\Program Files\QGIS Dufour\bin\Python.exe"

Tôi đã để lại dấu ngoặc kép ở đó vì vậy tôi sẽ không phải trích dẫn khoảng cách trong Command Promptđể giữ toàn bộ chuỗi thành một đối số duy nhất

Biến = Anaconda Giá trị =AnacondaDirectory\Python.exe

Làm thế nào tôi truy cập các bản cài đặt của scipy / numpy / etc

Biến = Python3 Giá trị =C:\Python34\Python.exe

Python 3 bao gồm một trình khởi chạy cho phép bạn chỉ định phiên bản ... >> py -3cho python 3 ... thông tin ở đây

Để gọi một System Variabletrong Command Prompt:

Khi bạn ở trong Command Prompt, bạn có thể gọi biến của mình bằng cách nhập %VariableName%vào dấu nhắc lệnh. Đối với mỗi cài đặt python, nó sẽ điều hướng đến {Directory}\Python.exeđể mở trình thông dịch tương tác. Nếu bạn không trích dẫn một Giá trị có khoảng trắng, bạn cần thêm các trích dẫn xung quanh cuộc gọi biến của mình, ví dụ: "%VariableValueWithSpaces%". Không có dấu ngoặc kép, dòng được phân chia theo khoảng trắng để chương trình của bạn sẽ không bắt đầu.

Tôi chắc chắn có nhiều cách dễ dàng hơn để làm mọi thứ, nhưng tôi thấy đây là một chút kiến ​​thức hữu ích nếu bạn đặc biệt thích sử dụng Command PromptWindows. Tôi thích khả năng truy cập các cài đặt python riêng lẻ chỉ bằng cách cung cấp một tên biến khác nhau.


Ngoài ra, những gì tôi làm: có tệp .cmd cho mỗi cài đặt đặt đường dẫn và có thể các thứ khác trong đường dẫn. Vì vậy, ví dụ có python34.cmd trong đường dẫn của bạn có chứa @set PATH=C:\Python34\;%PATH%. Sau đó, chỉ cần nhập python34 sẽ làm cho con trăn này có sẵn.
Josef nói Phục hồi lại

Bạn có nghĩa là có nó như là một biến hệ thống khác? Hoặc nối vị trí của python34.cmd vào Pathbiến của bạn ?
Branco

Ý tôi là bạn tạo một file cmd sẽ sẵn pend vị trí của python.exe đến đường dẫn của bạn. Bạn đặt tập tin cmd này bất cứ nơi nào trong đường dẫn của bạn. Bạn có thể tạo một thư mục mới và thêm nó vào biến đường dẫn. Sau đó, bạn có thể chạy python34 từ mọi shell, vì nó nằm trong đường dẫn. Python34.cmd sau đó sẽ thay đổi đường dẫn để phiên bản python bạn muốn là điều đầu tiên trong đường dẫn cho phiên shell hiện tại (và tất cả các phiên con).
Josef nói Phục hồi lại

Ok, hiểu rồi ... Đó cũng là một ý tưởng khá hay, đặc biệt nếu bạn đang thêm các cài đặt / thay đổi bổ sung cho tệp .cmd.
Branco
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.