2009-11-21 29 views
19

TextMate dường như sử dụng phiên bản Python dựng sẵn mà tôi giả định (sys.path không hoạt động). Làm thế nào để bạn cấu hình nó để sử dụng 3.1 thay vào đó? Tôi đã cài đặt gói 3.1 và tôi có thể sử dụng IDLE cho các phiên tương tác, nhưng tôi cần sử dụng TextMate ngay bây giờ.Sử dụng Python 3.1 với TextMate

Cảm ơn

Trả lời

45

TextMate sử dụng giá trị của biến TM_PYTHON để tìm đường dẫn đến thông dịch Python. Một giải pháp tốt là để tận dụng khả năng TextMate để xác định các biến như TM_PYTHON trên một cơ sở cho mỗi dự án:

  1. Mở một dự án TextMate mới hoặc hiện tại (File -> New Project hoặc File -> Open)

  2. De-chọn bất kỳ trong thanh bên danh sách dự án.

  3. Nhấp vào biểu tượng Get Info (i) trong thanh bên. Một ngăn Project Information xuất hiện.

  4. Nhấp + để thêm biến mới.

  5. Nhập TM_PYTHON vào trường Biến và đường dẫn đầy đủ tới trăn mong muốn trong trường Giá trị (ví dụ: /usr/local/bin/python3.1).

  6. Đóng cửa sổ Thông tin và lưu Dự án (File ->Save Project As).

Sau đó, bạn có thể thêm tệp khi cần thiết cho dự án và chúng sẽ chạy dưới con trăn đã chọn bằng lệnh Chạy Script của TextMate Python. Bạn có thể muốn lưu một dự án Python 3, giả sử, để chạy các tập lệnh đặc biệt trong Python 3. Đối với các dự án lớn hơn, bạn sẽ muốn tạo một dự án TextMate riêng biệt cho nó.

Để thay đổi phiên bản Python sử dụng trên toàn cầu trong vòng TextMate:

  1. Từ thanh TextMate menu, mở TextMate ->Preferences

  2. nhấp chuột trên Advanced pane

  3. nhấp chuột trên Shell Variable tab

  4. nhấp vào + để thêm một mới biến

  5. nhập TM_PYTHON trong Variable lĩnh vực và đường dẫn đầy đủ đến python trong lĩnh vực Value (có lẽ /usr/local/bin/python3.1)

Như Alex chỉ ra, bạn có thể phá vỡ chức năng TextMate khác bằng cách thay đổi phiên bản Python trên toàn cầu để thay đổi cho mỗi dự án có lẽ là một giải pháp tốt hơn.

CẬP NHẬT (2010-10-31):

Có một cách tiếp cận khác có thể dễ sử dụng hơn đối với một số dự án. Lệnh Run trong gói Python TextMate xuất hiện để tôn trọng một dòng shebang trong tệp đang chạy. Vì vậy, thay vì sửa đổi TM_PYTHON, bạn có thể chỉ định đường dẫn đến thông dịch viên để được sử dụng bằng cách bao gồm một dòng đầu tiên như thế này:

#!/usr/local/bin/python3.1 

# sample code to show version 
import sys 
print(sys.version_info) 

Trong nhiều trường hợp bạn không muốn hardwire đường dẫn tuyệt đối nhưng quản lý sử dụng thông qua biến môi trường bình thường PATH. Theo truyền thống, /usr/bin/env được sử dụng cho mục đích đó. Tuy nhiên, khi chạy dưới TextMate, các tệp hồ sơ vỏ của bạn thường không được sử dụng nên bất kỳ thay đổi nào đối với PATH không hiển thị ở đó, bao gồm cả /usr/local/bin hoặc /opt/local/bin hoặc bất kỳ nơi nào mà lệnh mong muốn python3 của bạn. Để giải quyết vấn đề đó, bạn có thể thêm hoặc sửa đổi biến số toàn cầu PATH thành TextMate ->Preferences (xem bên trên) với giá trị là /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin. Sau đó, bạn có thể sử dụng một dòng tổng quát hơn công việc như thế này:

#!/usr/bin/env python3 

(này tất cả dường như làm việc với vani gần đây nhất TextMate và bó Python của nó:. Không đảm bảo về phiên bản trước đó hoặc với bó Python khác)

+0

Perfect, cảm ơn! :) – 3zzy

+0

Tôi không thể tìm ra điều này ... có lẽ vì tôi đang sử dụng TextMate 2.0-alpha9495. Không có khung nâng cao, tôi cũng không thể tìm thấy tùy chọn dự án mới. Tôi cũng không nhìn thấy một dòng shebang, chỉ là một số mã ruby. –

+1

TextMate 2 đã thay đổi nhiều tính năng thư mục dự án cũ được tìm thấy trong TM1. TM2 có một cách linh hoạt hơn để chỉ định tất cả các loại thiết lập, bao gồm các biến 'PATH', trên cơ sở phân cấp, từng thư mục bằng cách sử dụng các tệp' .tm_properties'. Xem, ví dụ: http://blog.macromates.com/2011/git-style-configuration/ –

5

Theo this long thread (là về Python 3.0 và phiên bản TextMate hiện có vào mùa xuân trước, nhưng tôi tin là vẫn hợp lệ cho Python 3.1 và TextMate ngày nay), bạn có thể hoàn thành (ví dụ: qua câu trả lời của @ Ned) bạn làm nhiều lệnh TextMate cũng có thể phá vỡ (vì chúng được viết để sử dụng Python 2 và Python 3 không tương thích ngược với Python 2 - ví dụ, việc sử dụng reload, biến mất trong Python 3, được nhắc lại nhiều lần trong chuỗi). Tuy nhiên, nó có thể hoạt động nếu bạn không sử dụng hoặc cần nhiều chức năng của TextMate (ví dụ như sắp chữ LaTeX được nhắc đến như một cái gì đó hoàn toàn bị phá vỡ khi bạn sử dụng TextMate sử dụng Python 3 thay vì Python 2).

+0

Tôi đã cập nhật câu trả lời để bao gồm cách đặt biến trên cơ sở từng dự án. Điều đó sẽ ngăn ngừa vỡ! –

+0

Erm ... các bạn đang sợ tôi với các chi tiết! Tôi chỉ cần chạy 3.1 với Textmate để học cơ bản! :) Tôi đã thêm TM_PYTHON: /Library/Frameworks/Python.framework/Versions/3.1/bin/python3.1 như Ned được hướng dẫn và hiện đang sử dụng Python3.1 - Nó không hiển thị bất kỳ chi tiết nào với sys.path, nhưng tôi đã thử này: in ("Đây có phải là {}? - {}". Định dạng ('Python 3.1', 'Có!')) và nó đã hoạt động! Cảm ơn đống! :) – 3zzy

7

Muộn cho bữa tiệc, xin lỗi! Tôi lấy nó, bạn muốn chạy kịch bản bằng cách sử dụng thông dịch viên 'built-in' của TextMate? Tôi đã tìm thấy giải pháp đơn giản nhất là thêm một shebang, hoạt động rất tốt;

#!/usr/bin/env python3 

cho python 3.1 hoặc;

#!/usr/bin/env python 

cho trăn hệ thống mặc định, mặc dù phần sau không cần thiết cho bài tập.

2

các công việc là giải pháp tốt nhất, để xem nơi python 3 được lắp gõ vào terminal:

mà python3

bạn sẽ nhận được một cái gì đó như thế này:

/usr/local/bin/python3

nếu không điều xuất hiện đầu tiên cài đặt python3

và ở phía trên cùng của kịch bản chèn của bạn:

#/usr/local/bin/python3
Các vấn đề liên quan