2010-09-15 69 views
10

Tôi đã viết thư viện bằng python và tôi muốn nó nằm ở vị trí chung trên hệ thống tệp.Thêm thư mục vào đường dẫn của Python vĩnh viễn

Từ kịch bản của tôi, tôi chỉ muốn làm:

>>> import mylib 

Bây giờ tôi hiểu rằng để làm được điều này, tôi có thể làm điều này:

>>> import sys 
>>> sys.path.append(r'C:\MyFolder\MySubFolder') 
>>> import mylib 

Nhưng tôi không muốn phải làm điều đó mọi lúc.

Câu hỏi đặt ra là: Làm cách nào để thêm thư mục vào sys.path của python vĩnh viễn? Tôi sẽ tưởng tượng rằng nó sẽ là một biến môi trường, nhưng tôi không thể tìm thấy nó.

Dường như nó phải dễ dàng, nhưng tôi không thể tìm ra cách để làm điều đó.

Trả lời

10

Biến môi trường PYTHONPATH sẽ làm điều đó.

+0

Hoàn hảo. Đó là những gì tôi đang tìm kiếm. – riwalk

+0

Tính năng này có hoạt động với Linux không? Tôi thêm "PYTHONPATH = ~/pythons/ " vào .zshrc của tôi (echo $ PYTHONPATH cũng trả về nó). Sau đó, tôi in sys.path và nó không có ở đó. :/ – xliiv

+1

Ok, Nó hoạt động trong linux. Tôi không bao gồm lệnh 'xuất' trong .zshrc của tôi. Thật kỳ lạ bởi vì tôi đang thay đổi $ PATH và không cần phải 'xuất' nó. Bất kỳ ý tưởng? – xliiv

3

Một khả năng khác là để thay đổi sys.path trong sitecustomize.py của bạn, một kịch bản mà được nạp như thời gian khởi động Python . (Nó có thể được đặt bất cứ nơi nào trên con đường hiện có của bạn, và có thể làm bất kỳ nhiệm vụ thiết lập bạn thích; Tôi sử dụng nó để thiết lập hoàn thành tab với readline quá.)

Mô-đun site cung cấp một phương pháp chăm sóc thêm sys.path mà không cần bản sao và với .pth file:

import site 
site.addsitedir(r'C:\MyFolder\MySubFolder') 
+0

Nếu thêm một tập tin vào đường dẫn hiện tại là một lựa chọn, tại sao tôi thậm chí sẽ bận tâm cố gắng thay đổi đường dẫn ở tất cả? Và thậm chí tệ hơn, điều gì có thể khiến tôi muốn thêm dòng đó vào mọi kịch bản python mà tôi viết? Xin lỗi nụ ... không phải rất thanh lịch. – riwalk

+0

@ Stargazer712: Er ... 'sitecustomize.py' được tự động chạy bởi Python. Bạn không cần phải thêm một dòng vào mọi tập lệnh Python. Đó là toàn bộ vấn đề. – bobince

+0

có lẽ nó là từ một yêu cầu bất thành văn mà thư viện này được cài đặt bằng cách sử dụng một trình cài đặt điển hình, và sửa đổi một biến môi trường là dễ dàng hơn nhiều (và nhiều giao dịch giống) hơn chỉnh sửa một tập tin. – riwalk

1

tôi không biết nói chung nó như thế nào, nhưng tôi có một "usercustomize" tập tin nằm xung quanh đó được đọc khi bắt đầu vỏ của tôi. Có lẽ nó chỉ vì tôi là một newbie cho những người "biến môi trường" âm thanh đáng sợ ... Dù sao, đó là cách tôi vĩnh viễn sửa đổi sys.path của tôi

Nhưng như đã nói, tôi không biết nó nói chung như thế nào. Tôi có python 2.7.3, cài đặt với python (x, y) trên windows 7. Và tập tin này là

C:> Người dùng> Me> AppData> Roaming> Python> Python27> sitepackages> (Cẩn thận, AppData là thư mục ẩn)

và tập tin, như đã nói, là "usercustomize.py "không có gì đặc biệt trong tập tin đó. Trong trường hợp của tôi, chỉ 3 đường dẫn được nhập của tôi:

import sys 
sys.path.append('C:\\Users\\blablabla\\LPlot') 
sys.path.append('C:\\Users\\bliblibli\\MTSim') 
sys.path.append('C:\\Users\\blobloblo\\XP') 

hy vọng nó cũng giúp ích ... Và nếu không, đừng đánh tôi, tôi là 100% newb. Hoặc giả sử 99,99%

+0

hmmm thực sự nó không chỉ đơn giản là "đọc" khi bắt đầu giao diện điều khiển của tôi, như sys là thực sự không được nhập khẩu nhưng khi tôi bắt đầu nó ... Dù sao, 3 thư mục của tôi là vĩnh viễn trong sys.path của tôi ... Vì vậy, bằng cách nào đó nó làm việc ... –

+0

Chào mừng bạn đến với StackOverflow! Mong muốn của bạn để giúp đỡ là đáng khen ngợi, nhưng bạn không nên đăng câu trả lời cho một câu hỏi khi bạn không chắc chắn nếu họ là chính xác. Nếu bạn phải đưa ra câu trả lời của bạn với "Tôi không biết nó nói chung như thế nào", đó là dấu hiệu cho thấy bạn chưa đủ kinh nghiệm để trả lời câu hỏi này. Và bên cạnh đó, câu hỏi này đã được hỏi (và trả lời) gần ba năm trước; thêm một câu trả lời cho nó không có khả năng giúp người hỏi ban đầu, từ lâu đã chuyển sang các chủ đề khác. :-) – rmunn

+0

Xin lỗi ... Nhưng thực ra tôi đã tìm kiếm câu trả lời giống như câu trả lời tôi đặt trong một ngày; bởi vì tôi biết tập tin này đã tồn tại ở đâu đó, cho đến khi tôi tìm thấy nó một lần nữa (Ialready sử dụng nó trong quá khứ đặt không thể tìm thấy nó nữa). Vì vậy, tôi nghĩ có lẽ nó sẽ hữu ích cho người khác. Và tôi không muốn mở một chủ đề mới cho nó, khi cái này rất giống nhau ... –

Các vấn đề liên quan