Hướng dẫn how do you call a function from another directory in python? - làm thế nào để bạn gọi một hàm từ một thư mục khác trong python?

Đây là một loại vấn đề đường dẫn Python. Khi bạn nhập, Python sẽ tìm kiếm thư mục hiện tại và thư mục đường dẫn hệ thống mặc định. Vì UTILS_DIR không phải là thư mục công việc hiện tại của bạn (khi nhập, bạn làm việc trong inline_dir), cũng như trong đường dẫn hệ thống tìm kiếm Python mặc định, đó là lý do tại sao việc nhập không hoạt động.

Một cách đơn giản để giải quyết là

một). Đầu tiên làm cho UTILS_DIR làm gói Python: chỉ cần thêm init.py trong thư mục.init.py in the directory.

b). Sau đó, thêm đường dẫn của thư mục mẹ của UTILS_DIR vào biến môi trường PythonPath.

export PYTHONPATH=/home/user/parent_of_utils_dir:$PYTHONPATH

Bạn có thể thêm dòng này vào .bashrc của bạn để làm cho nó có sẵn mọi lúc.

c). Trong test.py của bạn, nhập chức năng

from utils import generator

hoặc

import utils.generator

Một cách phát triển python hơn là sử dụng setuptools và viết python script setup.py, sẽ giải quyết vấn đề phụ thuộc. Và sau đó bạn có thể sử dụng

python setup.py develop

để sử dụng trong chế độ phát triển.

Kiểm tra thêm Hướng dẫn phát triển gói Python tại https://packaging.python.org/

Hy vọng điều này sẽ giúp bạn.

Trong khi làm việc trên các dự án lớn, chúng tôi có thể đối mặt với một tình huống mà chúng tôi muốn nhập một mô -đun từ một thư mục khác. Nhưng vì một số lý do, mô -đun có thể không được nhập chính xác. Bây giờ đừng lo lắng nếu mô -đun của bạn không được nhập chính xác. Trong bài viết này, chúng tôi sẽ thảo luận về các cách để nhập một mô -đun từ một thư mục khác. & NBSP;module from a different directory. But for some reason, the module may not be imported correctly. Now don’t worry if your module is not imported correctly. In this article, we will discuss ways to import a module from another directory. 

Lưu ý: Một mô -đun chỉ là một chương trình Python kết thúc bằng phần mở rộng .py và một thư mục chứa một mô -đun trở thành một gói.A module is just a Python program that ends with .py extension and a folder that contains a module becomes a package.

Cấu trúc thư mục:

 - Folder_1
    - main.py
 - Folder_2
     - module1.py

Hãy giả sử, để nhập cách nhập tệp trong Python, chúng tôi có hai thư mục khác nhau, một có chứa Main.py là tệp Python chính của chúng tôi nơi chúng tôi muốn nhập Module1 từ thư mục_2. & NBSP;

MODULE1: Chứa hai hàm gọi là Thêm và ODD_EVEN. Chức năng Thêm sẽ có hai đối số và trả về việc bổ sung chúng. Hàm ODD_EVEN sẽ chỉ lấy một đối số và in ngay cả khi số chẵn hoặc in lẻ nếu số là lẻ. contains two functions called add and odd_even. The function add will takes two arguments and return the addition of them. The odd_even function will take only one argument and print Even if the number is even or print Odd if the number is odd.

module1.py 

Python3

def add(a, b):

    return

from utils import generator
0
from utils import generator
1
from utils import generator
2

def

from utils import generator
4

    

from utils import generator
6
from utils import generator
7
from utils import generator
8
from utils import generator
9
import utils.generator
0
import utils.generator
0
import utils.generator
2

import utils.generator
4
import utils.generator
5
import utils.generator
6
import utils.generator
7
import utils.generator
8

    

python setup.py develop
0
import utils.generator
3

import utils.generator
4
import utils.generator
5
import utils.generator
6
python setup.py develop
5
import utils.generator
8

Nếu chúng ta chỉ cần cố gắng nhập Module1 từ thư mục_2, chúng ta sẽ gặp phải lỗi sau.module1 from Folder_2, we will be encountering the following error.

main.py

Python3

python setup.py develop
7
python setup.py develop
8

python setup.py develop
9
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
0
import utils.generator
8

Output:

Hướng dẫn how do you call a function from another directory in python? - làm thế nào để bạn gọi một hàm từ một thư mục khác trong python?

Lỗi

ModulenotFounderRor, bởi vì theo mặc định, trình thông dịch Python sẽ chỉ kiểm tra tệp trong thư mục hiện tại và chúng tôi cần đặt đường dẫn tệp theo cách thủ công để nhập các mô -đun từ một thư mục khác. Chúng ta có thể làm điều này bằng cách sử dụng nhiều cách khác nhau. Những cách này được thảo luận dưới đây chi tiết., because by default Python interpreter will check for the file in the current directory only, and we need to set the file path manually to import the modules from another directory. We can do this using various ways. These ways are discussed below in detail.

Phương pháp 1: Nhập mô -đun từ các thư mục khác nhau bằng mô -đun SYS

Chúng ta có thể sử dụng sys.path để thêm đường dẫn của thư mục mới (thư mục từ nơi chúng ta muốn nhập các mô -đun) vào đường dẫn hệ thống để Python cũng có thể tìm mô -đun trong thư mục đó nếu nó không tìm thấy mô -đun trong thư mục hiện tại của nó. Khi sys.Path thuộc lớp loại danh sách để, chúng ta có thể dễ dàng sử dụng phương thức chèn để thêm đường dẫn thư mục.sys.pathto add the path of the new different folder (the folder from where we want to import the modules) to the system path so that Python can also look for the module in that directory if it doesn’t find the module in its current directory. As sys.path falls under the list type class so, we can easily use the insert method to add the folder path.

Python3

 - Folder_1
    - main.py
 - Folder_2
     - module1.py
2
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
3
python setup.py develop
7
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
5

python setup.py develop
7
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
7

 - Folder_1
    - main.py
 - Folder_2
     - module1.py
8
import utils.generator
2
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
0
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
1
import utils.generator
8

- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
3
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
0
import utils.generator
8

import utils.generator
5
import utils.generator
6
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
8
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
9
from utils import generator
9
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
0
from utils import generator
9def3

Output::

Hướng dẫn how do you call a function from another directory in python? - làm thế nào để bạn gọi một hàm từ một thư mục khác trong python?

Sử dụng SYS

Phương pháp 2: Sử dụng biến PythonPathEnv môi trường environment variable

Tương tự, nếu bạn không muốn sử dụng mô -đun SYS để đặt đường dẫn của thư mục mới. Bạn có thể gán một đường dẫn thư mục cho biến PythonPath và vẫn giúp chương trình của bạn hoạt động. & NBSP;sys module to set the path of the new directory. You can assign a directory path to the PYTHONPATH variable and still get your program working. 

Trong Linux, chúng ta có thể sử dụng lệnh sau trong thiết bị đầu cuối để đặt đường dẫn:

Xuất pythonpath = đường dẫn/đến/thư mục

Trong hệ thống Windows:

Đặt pythonpath = đường dẫn/đến/thư mục trực tuyến

Để xem liệu biến PythonPath có giữ đường dẫn của thư mục mới hay không, chúng ta có thể sử dụng lệnh sau:

Echo $ Pythonpath

Python3

 - Folder_1
    - main.py
 - Folder_2
     - module1.py
2
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
3
python setup.py develop
7
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
5

- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
3
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
0
import utils.generator
8

import utils.generator
5
import utils.generator
6
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
8
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
9
from utils import generator
9
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
0
from utils import generator
9def3

Output:

Hướng dẫn how do you call a function from another directory in python? - làm thế nào để bạn gọi một hàm từ một thư mục khác trong python?

python setup.py develop
7
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
7

Sử dụng SYS

- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py

Phương pháp 2: Sử dụng biến PythonPathEnv môi trường new.py module from Folder_2 to our project’s Folder_1 main.py file.

Syntax:

Tương tự, nếu bạn không muốn sử dụng mô -đun SYS để đặt đường dẫn của thư mục mới. Bạn có thể gán một đường dẫn thư mục cho biến PythonPath và vẫn giúp chương trình của bạn hoạt động. & NBSP;

Python3

python setup.py develop
7
 - Folder_1
    - main.py
 - Folder_2
     - module1.py
7

 - Folder_1
    - main.py
 - Folder_2
     - module1.py
8
import utils.generator
2
- project
    - Folder_1
        - main.py
    - Folder_2
        - subfolder
            - new.py
0    4
import utils.generator
8

Sử dụng SYS

return0

Output:

Hướng dẫn how do you call a function from another directory in python? - làm thế nào để bạn gọi một hàm từ một thư mục khác trong python?

Phương pháp 2: Sử dụng biến PythonPathEnv môi trường


Làm cách nào để gọi một chức năng trong một thư mục khác trong Python?

Cách pythonic nhất để nhập một 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 chính sẽ được nhập từ .. Nhập mô -đun.place an empty file named __init__.py into that folder and use the relative path with the dot notation. For example, a module in the parent folder would be imported with from .. import module .

Làm thế nào để bạn gọi một chức năng trong Python?

Sử dụng dấu ngoặc đơn để gọi một hàm trong Python để sử dụng các hàm trong Python, bạn viết tên hàm (hoặc biến trỏ đến đối tượng hàm) theo sau là dấu ngoặc đơn (để gọi hàm).write the function name (or the variable that points to the function object) followed by parentheses (to call the function).

Làm thế nào để bạn gọi một thư mục trong Python?

Để tìm thư mục làm việc hiện tại trong Python, hãy sử dụng os.getcwd () và để thay đổi thư mục làm việc hiện tại, hãy sử dụng hệ điều hành.Chdir (đường dẫn).use os. getcwd() , and to change the current working directory, use os. chdir(path) .

__ init __ py làm gì trong python?

Các tệp __init__.py được yêu cầu để làm cho các thư mục xử lý Python chứa tệp dưới dạng các gói.Điều này ngăn các thư mục có tên chung, chẳng hạn như chuỗi, vô tình ẩn các mô -đun hợp lệ xảy ra sau đó trên đường dẫn tìm kiếm mô -đun.make Python treat directories containing the file as packages. This prevents directories with a common name, such as string , unintentionally hiding valid modules that occur later on the module search path.