Làm thế nào Python tìm thấy các mô -đun của nó
Được thực hiện nghiêm ngặt, một mô -đun là một tệp Python duy nhất, trong khi gói là một thư mục chứa các tệp python, kèm theo một tệp [có thể trống] có tên
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
3, để nói với Python rằng đó là một gói để nhập các mô -đun. Trong cả hai trường hợp, các mô -đun cần tiện ích mở rộng import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
4 của chúng, nhưng nhập chúng được thực hiện mà không có [xem thêm bên dưới].Theo mặc định, Python tìm kiếm các mô -đun và gói của nó trong
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
5.Để tìm hiểu những gì được bao gồm trong $ PythonPath, hãy chạy mã sau trong Python [3]:
import sys
print[sys.path]
Cách thêm thư mục
Thỉnh thoảng
Từ trong tệp Python, thỉnh thoảng bạn có thể thêm [các] đường dẫn vào đường dẫn mặc định bằng cách thêm các dòng sau vào phần đầu của ứng dụng Python hoặc tập lệnh:
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
Ví dụ:
Nếu tôi có một thư mục:
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
6 và tôi muốn nhập tệp import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
7, nằm trong thư mục đó, tôi thêm phần này vào phần đầu của mã của tôi:import sys
sys.path.insert[0, "/home/myname/pythonfiles"]
Và tôi chỉ có thể nhập tệp
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
7 bằng:import module_1
Khi tôi tạo một gói và muốn nhập [các] mô -đun từ gói, tôi cần tạo một thư mục trong
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
5, chứa các mô -đun, kèm theo một tệp [có thể trống] được gọi là import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
3Ví dụ:
Nếu tôi có một thư mục:
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
6 và tôi muốn nhập tệp import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
7, nằm trong thư mục đó, tôi thêm phần này vào phần đầu của mã của tôi:from import module_2
Và tôi chỉ có thể nhập tệp
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
7 bằng:Khi tôi tạo một gói và muốn nhập [các] mô -đun từ gói, tôi cần tạo một thư mục trong
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
5, chứa các mô -đun, kèm theo một tệp [có thể trống] được gọi là import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
3export PYTHONPATH=$PYTHONPATH:/path/you/want/to/add
Để nhập từ gói [thư mục] được gọi là
1 trong import sys
sys.path.insert[0, "/home/myname/pythonfiles"]
6, hãy thêm đường dẫn import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
6 vào import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
5 của bạn, như trong ví dụ 1 và nhập mô -đun có tên import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
5 [bên trong thư mục gói] chỉ đơn giản với: ``import sys
sys.path.insert[0, "/home/myname/pythonfiles"]
Thêm thư mục vào
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
5 vĩnh viễn:import packagename.subfolder.module_3
Thêm dòng sau vào tệp
import sys
sys.path.insert[0, "/home/myname/pythonfiles"]
7 của bạn.Thư mục con
Từ trong một gói, các thư mục con không được bao gồm như thế; Bạn cần phải "chuỗi" các thư mục. Để nhập mô -đun
import sys
sys.path.insert[0, "/home/myname/pythonfiles"]
8, thư mục bên trong thư mục bên trong import module_1
0:Example:
Với thực tế là tất cả các thư mục con trong gói bao gồm tệp
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
3 của riêng chúng.import module
Mã của tôi là:
import scriptlib.abc
import scriptlib.xyz
def foo[]:
... some operations
Nhưng scriptlib nằm trong một số thư mục khác, vì vậy tôi sẽ phải bao gồm thư mục đó trong biến môi trường "PythonPath".
Dù sao đi nữa, trước tiên tôi có thể thêm thư mục scriptlib trong biến môi trường "PythonPath" trước khi câu lệnh nhập được thực thi như:
import sys
sys.path.append['/mypath/scriptlib']
import scriptlib.abc
import scriptlib.xyz
def foo[]:
... some operations
Nếu vậy, giá trị chỉ cho lời nhắc lệnh đó hay là toàn cầu?
Cảm ơn trước
Đã hỏi ngày 27 tháng 2 năm 2013 lúc 10:20Feb 27, 2013 at 10:20
1
Điều này sẽ thêm một đường dẫn đến quy trình / phiên bản Python của bạn [nghĩa là có thể thực thi đang chạy]. Đường dẫn sẽ không được sửa đổi cho bất kỳ quy trình Python nào khác. Một chương trình Python đang chạy khác sẽ không được sửa đổi đường dẫn và nếu bạn thoát khỏi chương trình của mình và chạy lại, đường dẫn sẽ không bao gồm những gì bạn đã thêm trước đó. Bạn đang làm gì nói chung là chính xác.
set.py:
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
0loop.py
import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
1Chạy:
import module_1
4Điều này sẽ chạy Loop.py, được kết nối với stdout của bạn và nó sẽ tiếp tục chạy ở chế độ nền. Sau đó, bạn có thể chạy
import module_1
5. Mỗi bộ có một bộ biến môi trường khác nhau. Quan sát rằng đầu ra từ import module_1
6 không thay đổi vì import module_1
7 không thay đổi môi trường của ____ 36.Một lưu ý về nhập khẩu
Nhập khẩu Python là động, giống như phần còn lại của ngôn ngữ. Không có liên kết tĩnh đang diễn ra. Nhập là một dòng thực thi, giống như
import module_1
9.Đã trả lời ngày 27 tháng 2 năm 2013 lúc 10:24Feb 27, 2013 at 10:24
JoejoeJoe
45.2K32 Huy hiệu vàng147 Huy hiệu bạc238 Huy hiệu đồng32 gold badges147 silver badges238 bronze badges
2
Như đã lưu ý trong các tài liệu ở đây.
Truy cập
from import module_2
0 [Windows] hoặc from import module_2
1 [Linux] và thêm các dòng này vào from import module_2
2 ở đó,import sys
sys.path.insert[0, "/path/to/your/package_or_module"]
2Điều này thay đổi
from import module_2
3 của bạn để trên mỗi tải, nó sẽ có giá trị đó trong đó ..Như đã nêu ở đây về
from import module_2
2,Mô -đun này được tự động nhập trong quá trình khởi tạo. Nhập mô-đun này sẽ nối các đường dẫn dành riêng cho trang web vào đường dẫn tìm kiếm mô-đun và thêm một vài tích hợp. Importing this module will append site-specific paths to the module search path and add a few builtins.
Đối với các phương pháp có thể khác để thêm một số đường dẫn vào
from import module_2
3, hãy xem các tài liệu nàyĐã trả lời ngày 27 tháng 2 năm 2013 lúc 10:36Feb 27, 2013 at 10:36
Pradyunsgpradyunsgpradyunsg
Phim thương hiệu vàng 17K1141 Huy hiệu bạc92 Huy hiệu đồng11 gold badges41 silver badges92 bronze badges
5