2009-03-05 18 views
6

Tôi không có nhiều kinh nghiệm với tcsh, nhưng tôi quan tâm đến việc học. Tôi đã gặp sự cố khi nhận Python để xem PYTHONPATH. Tôi có thể echo $ PYTHONPATH, và nó là chính xác, nhưng khi tôi khởi động Python, đường dẫn của tôi không hiển thị trong sys.path. Ý tưởng nào?Python trong tcsh

EDIT:

[[email protected] ~]$ echo $PYTHONPATH 
/home/ba01/u116/dmcdonal/PyCogent-v1.1 

>>> from sys import path 
>>> from os import environ 
>>> path 
['', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/setuptools-0.6c8-py2.5.egg', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/FiPy-2.0-py2.5.egg', '/apps/steele/Python-2.5.2', '/apps/steele/Python-2.5.2/lib/python25.zip', '/apps/steele/Python-2.5.2/lib/python2.5', '/apps/steele/Python-2.5.2/lib/python2.5/plat-linux2', '/apps/steele/Python-2.5.2/lib/python2.5/lib-tk', '/apps/steele/Python-2.5.2/lib/python2.5/lib-dynload', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages', '/apps/steele/Python-2.5.2/lib/python2.5/site-packages/Numeric'] 
>>> environ['PYTHONPATH'] 
'/apps/steele/Python-2.5.2' 

Trả lời

10

Bạn đặt PYTHONPATH như thế nào? Bạn có thể nhầm lẫn giữa bộ tcsh và setenv. Sử dụng "set" để đặt những gì tcsh gọi biến shell và sử dụng "setenv" để đặt biến môi trường. Vì vậy, bạn cần phải sử dụng setenv để Python nhìn thấy nó. Ví dụ:

$ set FOO='bar' 
$ echo $FOO 
bar 
$ python -c 'import os; print os.getenv("FOO")' 
None 

$ setenv BAR 'wiz' 
$ echo $BAR 
wiz 
$ python -c 'import os; print os.getenv("BAR")' 
wiz 

Có một số thông tin khác có sẵn trong the variables section of the tcsh documentation.

1

Hãy chắc chắn rằng bạn không bắt đầu trăn với các tùy chọn -E (đó là: bỏ qua các biến môi trường). Nếu bạn bắt đầu python thông qua một kịch bản shell hoặc một số ứng dụng khác, chỉ cần kiểm tra lại nó không thêm bất cứ điều gì.

Vì danh sách sys.path dài nên khó có thể bỏ lỡ đường dẫn của bạn. Công cụ PYTHONPATH thường được thêm vào khoảng giữa danh sách, sau tất cả các đường dẫn thư viện. Bất kỳ cơ hội con đường của bạn đang có, chỉ cần chôn cất ở giữa?

+0

chắc chắn không có trong danh sách và tôi gọi trực tiếp số nhị phân – daniel

+0

Hmmm ... Có hoạt động trong bất kỳ trình bao nào khác không? Nếu bạn bật vào bash, vv, nó có hoạt động ở đó không? Phiên bản nào của Python, btw? –

+0

hoạt động trong bash tốt. v2.5.2 – daniel

0

Kiểm tra:

  1. PYTHONPATH là trong os.environ,
  2. và thiết lập với giá trị đúng đắn về dấu hai chấm tách danh sách đường dẫn.

Nếu có, và bạn có thể xác nhận rằng đường dẫn của bạn không có trong sys.path, bạn đã tìm thấy lỗi.

Nếu không có trong os.environ, môi trường của bạn không chuyển sang Python (có thể là lỗi khác).

Tất nhiên, hãy cho chúng tôi biết mã/xuất khẩu thực tế và một người nào đó sẽ cho bạn biết khá nhanh chóng.

0

Tôi cũng có cùng một vấn đề ngay cả khi tôi đặt môi trường PYTHONPATH chính xác trong .cshrc khi tôi sử dụng Python 2.5.1, khi tôi chuyển sang Python 2.6.2, Nó hoạt động tốt. Có vẻ như đó là lỗi trăn.