Chạy tệp python trong thư mục khác

Cách Pythonic nhất để nhập mô-đun từ một thư mục khác là đặt một tệp trống có tên __init__.py vào thư mục đó và sử dụng đường dẫn tương đối với ký hiệu dấu chấm

Ví dụ: một mô-đun trong thư mục mẹ sẽ được nhập với from . import module. Tệp __init__.py báo hiệu cho Python rằng thư mục phải được coi là gói

Chạy tệp python trong thư mục khác

Xây dựng vấn đề

Vấn đề. Làm cách nào để nhập tệp hoặc mô-đun từ một thư mục hoặc thư mục khác trong Python?

Ví dụ. Giả sử, bạn đã đưa ra cấu trúc thư mục sau

application
 ├── app
 │   └── folder
 │       └── file_1.py
 └── app2
     └── some_folder
         └── file_2.py

Mục tiêu của bạn là nhập các hàm từ file_1.py trong

# file_2.py
import sys
sys.path.append('/.../application/app/folder')

import file_1
0

Phương pháp 1. hệ thống. con đường. nối thêm ()

Chạy tệp python trong thư mục khác

Phương thức đầu tiên nối thêm đường dẫn của ____17_______ vào biến ____1_______2 của hệ thống

# file_2.py
import sys
sys.path.append('/.../application/app/folder')

import file_1

Lưu ý rằng bạn cần thay thế ba dấu chấm đầu tiên trong

# file_2.py
import sys
sys.path.append('/.../application/app/folder')

import file_1
3 bằng đường dẫn cụ thể đến thư mục
# file_2.py
import sys
sys.path.append('/.../application/app/folder')

import file_1
4

Nhân tiện, vui lòng tham gia học viện email miễn phí của tôi và tải xuống bảng gian lận Python của bạn tại đây

Thật thú vị–và hàng nghìn Finxter đã nói với tôi rằng họ thích các cheat sheet

Được rồi, hãy chuyển sang một giải pháp sửa đổi một chút cho vấn đề này

Phương pháp 2. hệ thống. con đường. chèn()

Chạy tệp python trong thư mục khác

Một cách thay thế tương tự là chèn đường dẫn của file_1.py vào vị trí 1 của biến

# file_2.py
import sys
sys.path.append('/.../application/app/folder')

import file_1
2 của hệ thống

Điều này đảm bảo rằng nó được tải với mức độ ưu tiên cao hơn và tránh một số xung đột khi đặt tên

# file_2.py
import sys
sys.path.insert(1, '/.../application/app/folder')

import file

Một lần nữa, thay thế ba dấu chấm đầu tiên trong

# file_2.py
import sys
sys.path.append('/.../application/app/folder')

import file_1
3 bằng đường dẫn cụ thể đến thư mục
# file_2.py
import sys
sys.path.append('/.../application/app/folder')

import file_1
4

Phương pháp 3. Ký hiệu dấu chấm với __init__. py

Chạy tệp python trong thư mục khác

Bạn cũng có thể thực hiện thủ thuật sau—tạo một gói mới

# file_2.py
from application.app.folder.file_1 import func_name

Tuy nhiên, đảm bảo bao gồm một tệp __init__.py trống trong thư mục

Tệp này báo cho Python coi thư mục là một gói. Tôi coi đây là cách Pythonic nhất để giải quyết vấn đề này

Phương pháp 4. nhập khẩu

Chạy tệp python trong thư mục khác

Một giải pháp thay thế không quá Pythonic - phức tạp hơn và dựa trên các phụ thuộc bên ngoài - sẽ là sử dụng mô-đun

# file_2.py
import sys
sys.path.insert(1, '/.../application/app/folder')

import file
0

Đây là một ví dụ

import importlib.util as ilu

folder = '/.../application/app/folder'
file = 'file_2'

spec = ilu.spec_from_file_location(file, folder)
your_lib = ilu.module_from_spec(spec)
spec.loader.exec_module(your_lib)

your_lib.function()

Vui lòng xem video giải thích sau đây, trong đó Peter, Người sáng tạo Finxter, chỉ cho bạn cách gọi một hàm từ một tệp khác

Làm cách nào để gọi một hàm từ một tệp khác trong Python?

Chạy tệp python trong thư mục khác

Xem video này trên YouTube

Người giới thiệu

  • https. // stackoverflow. com/câu hỏi/4383571/nhập-tệp-từ-thư mục khác nhau
  • https. // stackoverflow. com/questions/67631/how-to-import-a-module-given-the-full-path?rq=1
  • Cách nhập hàm Python từ thư mục khác

Đi đâu từ đây?

Đủ lý thuyết. Hãy thực hành một số

Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa

Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế

Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không?

🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn

Tham gia hội thảo trên web miễn phí ngay bây giờ

Các hướng dẫn khác về Finxter

Học tập là một quá trình liên tục và bạn nên khôn ngoan để không bao giờ ngừng học hỏi và cải thiện trong suốt cuộc đời mình. 👑

Học gì?

Tôi khuyên bạn nên đọc ít nhất một hướng dẫn mỗi ngày (chỉ 5 phút cho mỗi hướng dẫn là đủ) để đảm bảo rằng bạn không ngừng học hỏi

💡 Nếu bạn muốn chắc chắn rằng mình không quên thói quen của mình, vui lòng tham gia học viện email miễn phí của chúng tôi để nhận các hướng dẫn mới hàng tuần và lời nhắc học tập trong HỘP THƯ ĐẾN của bạn

Ngoài ra, hãy lướt qua danh sách hướng dẫn sau đây và mở 3 hướng dẫn thú vị trong tab trình duyệt mới để bắt đầu thói quen học tập mới — hoặc tiếp tục với thói quen học tập hiện tại — của bạn ngay hôm nay. 🚀

Khái niệm cơ bản về Python

  • Python Một dòng cho Vòng lặp
  • Nhập mô-đun từ thư mục khác
  • Xác định loại đối tượng Python
  • Chuyển đổi danh sách chuỗi thành danh sách int
  • Chuyển đổi danh sách Int thành danh sách chuỗi
  • Chuyển đổi danh sách chuỗi thành danh sách nổi
  • Chuyển đổi danh sách thành mảng NumPy
  • Nối dữ liệu vào tệp JSON
  • Danh sách lọc Python
  • Danh sách lồng nhau

Quản lý phụ thuộc Python

  • Cài đặt PIP
  • Cách kiểm tra phiên bản Python của bạn
  • Kiểm tra phiên bản Pandas trong Script
  • Kiểm tra phiên bản Python Jupyter
  • Kiểm tra phiên bản gói PIP

Gỡ lỗi Python

  • Bắt và in ngoại lệ
  • Danh sách chỉ số vượt khỏi phạm vi
  • Sửa Giá trị Lỗi Sự thật
  • Không thể nhập tên X Lỗi

Nội dung thú vị

  • 5 Cheat Sheet Mỗi Python Coder cần sở hữu
  • 10 câu đố Python hay nhất để khám phá trình độ kỹ năng thực sự của bạn
  • Cách kiếm 1000 đô la từ bên lề với tư cách là một Freelancer Python

Cảm ơn bạn đã học với Finxter

lập trình viên

Q: How do you tell an introverted computer scientist from an extroverted computer scientist?

A: An extroverted computer scientist looks at your shoes when he talks to you.

Chạy tệp python trong thư mục khác

Chris

Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính

Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners (NoStarch 2020), đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới

Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây