Hướng dẫn import python from subdirectory - nhập python từ thư mục con

592

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một tập tin gọi là

import lib.BoxTime as BT
...
BT.bt_function()
0, nằm trên
import lib.BoxTime as BT
...
BT.bt_function()
1.

import lib.BoxTime as BT
...
BT.bt_function()
1 có một thư mục con được gọi là
import lib.BoxTime as BT
...
BT.bt_function()
3, với một tệp có tên
import lib.BoxTime as BT
...
BT.bt_function()
4:

/project/tester.py
/project/lib/BoxTime.py

Tôi muốn nhập

import lib.BoxTime as BT
...
BT.bt_function()
5 từ
import lib.BoxTime as BT
...
BT.bt_function()
6. Tôi đã thử điều này:

import lib.BoxTime

Kết quả là:

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime

Bất kỳ ý tưởng làm thế nào để nhập

import lib.BoxTime as BT
...
BT.bt_function()
5 từ thư mục con?

CHỈNH SỬA

import lib.BoxTime as BT
...
BT.bt_function()
8 là vấn đề, nhưng đừng quên gọi
import lib.BoxTime as BT
...
BT.bt_function()
5 là
def foo():
    print "foo!"
0 hoặc sử dụng:

import lib.BoxTime as BT
...
BT.bt_function()

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

Hỏi ngày 11 tháng 8 năm 2009 lúc 14:39Aug 11, 2009 at 14:39

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

Adam Matanadam MatanAdam Matan

121K137 Huy hiệu vàng383 Huy hiệu bạc543 Huy hiệu Đồng137 gold badges383 silver badges543 bronze badges

1

  • Tạo một thư mục con có tên
    import lib.BoxTime as BT
    ...
    BT.bt_function()
    
    3.
  • Tạo một tệp trống có tên
    def foo():
        print "foo!"
    
    2.
  • Trong

    def foo():
        print "foo!"
    
    3, hãy viết một hàm
    def foo():
        print "foo!"
    
    4 như thế này:

    def foo():
        print "foo!"
    
  • Trong mã máy khách của bạn trong thư mục trên

    import lib.BoxTime as BT
    ...
    BT.bt_function()
    
    3, viết:

    from lib import BoxTime
    BoxTime.foo()
    
  • Chạy mã khách hàng của bạn. Bạn sẽ nhận được:

    foo!
    

Rất nhiều sau - trong Linux, nó sẽ như thế này:

% cd ~/tmp
% mkdir lib
% touch lib/__init__.py
% cat > lib/BoxTime.py << EOF
heredoc> def foo():
heredoc>     print "foo!"
heredoc> EOF
% tree lib
lib
├── BoxTime.py
└── __init__.py

0 directories, 2 files
% python 
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from lib import BoxTime
>>> BoxTime.foo()
foo!

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

serv-inc

33,7K9 Huy hiệu vàng148 Huy hiệu bạc176 Huy hiệu đồng9 gold badges148 silver badges176 bronze badges

Đã trả lời ngày 11 tháng 8 năm 2009 lúc 14:46Aug 11, 2009 at 14:46

Hughdbrowhughdbrownhughdbrown

46.3K20 Huy hiệu vàng83 Huy hiệu bạc106 Huy hiệu đồng20 gold badges83 silver badges106 bronze badges

9

Bạn có thể thử chèn nó vào

def foo():
    print "foo!"
6:

sys.path.insert(0, './lib')
import BoxTime

Đã trả lời ngày 21 tháng 2 năm 2013 lúc 9:47Feb 21, 2013 at 9:47

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

9

Tôi đang viết ra điều này bởi vì mọi người dường như đề nghị rằng bạn phải tạo một thư mục

import lib.BoxTime as BT
...
BT.bt_function()
3.

Bạn không cần phải đặt tên cho Đạo thuật phụ của bạn

import lib.BoxTime as BT
...
BT.bt_function()
3. Bạn có thể đặt tên cho nó
def foo():
    print "foo!"
9 với điều kiện bạn đặt một
import lib.BoxTime as BT
...
BT.bt_function()
8 vào đó.

Bạn có thể làm điều đó bằng cách nhập lệnh sau vào vỏ Linux:

$ touch anything/__init__.py 

Vì vậy, bây giờ bạn có cấu trúc này:

import lib.BoxTime
0

Sau đó, bạn có thể nhập

from lib import BoxTime
BoxTime.foo()
1 vào
from lib import BoxTime
BoxTime.foo()
2 như thế này:

import lib.BoxTime
1

Bạn cũng có thể nhập các chức năng và các lớp như thế này:

import lib.BoxTime
2

Bất kỳ chức năng hoặc lớp biến nào bạn đặt bên trong

import lib.BoxTime as BT
...
BT.bt_function()
8 cũng có thể được truy cập:

import lib.BoxTime
3

Hoặc như thế này:

import lib.BoxTime
4

Đã trả lời ngày 3 tháng 10 năm 2018 lúc 14:11Oct 3, 2018 at 14:11

Nurettinnurettinnurettin

10,7K5 Huy hiệu vàng62 Huy hiệu bạc83 Huy hiệu Đồng5 gold badges62 silver badges83 bronze badges

3

Hãy thử

from lib import BoxTime
BoxTime.foo()
4. Để biết thêm thông tin, hãy đọc về nhập khẩu tương đối trong PEP 328.

Đã trả lời ngày 11 tháng 8 năm 2009 lúc 14:42Aug 11, 2009 at 14:42

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

drrlvndrrlvndrrlvn

7.9992 Huy hiệu vàng42 Huy hiệu bạc57 Huy hiệu Đồng2 gold badges42 silver badges57 bronze badges

4

Thư mục LIB của bạn có chứa tệp

import lib.BoxTime as BT
...
BT.bt_function()
8 không?

Python sử dụng

import lib.BoxTime as BT
...
BT.bt_function()
8 để xác định xem một thư mục có phải là mô -đun không.

Đã trả lời ngày 11 tháng 8 năm 2009 lúc 14:44Aug 11, 2009 at 14:44

WadewadeWade

1.0087 huy hiệu bạc9 Huy hiệu đồng7 silver badges9 bronze badges

Ví dụ đầy đủ bao gồm

Điều này về cơ bản bao gồm tất cả các trường hợp (đảm bảo bạn có

import lib.BoxTime as BT
...
BT.bt_function()
8 trong tương đối/đường dẫn/đến/của bạn/lib/thư mục):

import lib.BoxTime
5

Example:

Bạn có trong thư mục dự án của mình:

import lib.BoxTime
6

Bạn có trong một thư mục dự án khác:

import lib.BoxTime
7

Bạn muốn sử dụng

from lib import BoxTime
BoxTime.foo()
8 và gọi hàm foo có trong đó.

Vì vậy, bạn viết trong app.py:

import lib.BoxTime
8

Đã trả lời ngày 8 tháng 2 năm 2016 lúc 14:32Feb 8, 2016 at 14:32

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

MercurymercuryMercury

6.4832 Huy hiệu vàng37 Huy hiệu bạc48 Huy hiệu đồng2 gold badges37 silver badges48 bronze badges

4

Tạo một tệp trống

import lib.BoxTime as BT
...
BT.bt_function()
8 trong thư mục con /lib. Và thêm vào đầu mã chính

import lib.BoxTime
9

sau đó

import lib.BoxTime as BT
...
BT.bt_function()

hoặc tốt hơn

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
1

Đã trả lời ngày 28 tháng 1 năm 2018 lúc 20:58Jan 28, 2018 at 20:58

MikmikMik

791 Huy hiệu bạc3 Huy hiệu đồng1 silver badge3 bronze badges

1

Chỉ là một bổ sung cho những câu trả lời này.

Nếu bạn muốn nhập tất cả các tệp từ tất cả các thư mục con, bạn có thể thêm nó vào gốc của tệp của mình.all files from all subdirectories, you can add this to the root of your file.

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
2

Và sau đó bạn chỉ cần nhập các tệp từ các thư mục con giống như các tệp này nằm trong thư mục hiện tại.

Ví dụ làm việc

Nếu tôi có thư mục sau với các thư mục con trong dự án của mình ...

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
3

Tôi có thể đặt mã sau trong tệp

foo!
0 của mình

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
4

Nói cách khác, mã này sẽ trừu tượng từ thư mục mà tệp đến từ đó.

Đã trả lời ngày 19 tháng 4 năm 2020 lúc 21:00Apr 19, 2020 at 21:00

VictorvictorVictor

1.49117 Huy hiệu bạc16 Huy hiệu đồng17 silver badges16 bronze badges

2

Đối với sơ đồ phân cấp thư mục này Ví dụ:

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
5

1- Tạo tệp PY trống

import lib.BoxTime as BT
...
BT.bt_function()
8 bên trong thư mục LIBlib folder

2- Trong trình kiểm tra tệp py caller.py thêm các dòng mã luận văn

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
6

Giải thích dễ dàng có thể được tìm thấy ở đây.

THÔNG BÁO: Điều này được gọi là tạo/nhập các mô -đun trong/từ các thư mục khác nhau.

Trải nghiệm Personel: Tôi đã cố gắng tạo mô -đun từ Jupyter Notebook, nó không hoạt động (có thể tôi đã thực hiện nó không đúng cách bằng cách sử dụng .ipynb), tôi cần phải thực hiện nó bằng thủ công bên ngoài sổ ghi chép JUYPYTER hoặc sử dụng IDE khác (ví dụ: pycharm).

Đã trả lời ngày 8 tháng 2 lúc 6:09Feb 8 at 6:09

AhmedahmedAhmed

Phù hiệu bằng đồng 9133 bronze badges

1

create_card.py

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
7

app.py

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
8

Nếu bạn chỉ muốn nhập các chức năng cần thiết

Traceback (most recent call last):
  File "./tester.py", line 3, in 
    import lib.BoxTime
ImportError: No module named lib.BoxTime
9

Nếu bạn có thư mục lồng nhau (ví dụ: mô-đun/aadhaar/created card.py)

foo!
2 hoặc
foo!
3

Đã trả lời ngày 9 tháng 9 lúc 15:32Sep 9 at 15:32

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

GopalgopalGopal

1.95920 huy hiệu bạc16 Huy hiệu đồng20 silver badges16 bronze badges

foo!
4

foo!
5

Tạo tệp trống

import lib.BoxTime as BT
...
BT.bt_function()
8 xuống dòng cho đến khi bạn tiếp cận tệp

foo!
7

foo!
8 - Nhu cầu có hai mục một
import lib.BoxTime as BT
...
BT.bt_function()
8 và một thư mục có tên là một số
% cd ~/tmp
% mkdir lib
% touch lib/__init__.py
% cat > lib/BoxTime.py << EOF
heredoc> def foo():
heredoc>     print "foo!"
heredoc> EOF
% tree lib
lib
├── BoxTime.py
└── __init__.py

0 directories, 2 files
% python 
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from lib import BoxTime
>>> BoxTime.foo()
foo!
0 có hai mục
% cd ~/tmp
% mkdir lib
% touch lib/__init__.py
% cat > lib/BoxTime.py << EOF
heredoc> def foo():
heredoc>     print "foo!"
heredoc> EOF
% tree lib
lib
├── BoxTime.py
└── __init__.py

0 directories, 2 files
% python 
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from lib import BoxTime
>>> BoxTime.foo()
foo!
1 và
import lib.BoxTime as BT
...
BT.bt_function()
8

piman314

5.19522 Huy hiệu bạc34 Huy hiệu đồng22 silver badges34 bronze badges

Đã trả lời ngày 16 tháng 3 năm 2018 lúc 20:20Mar 16, 2018 at 20:20

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

thử cái này:

% cd ~/tmp
% mkdir lib
% touch lib/__init__.py
% cat > lib/BoxTime.py << EOF
heredoc> def foo():
heredoc>     print "foo!"
heredoc> EOF
% tree lib
lib
├── BoxTime.py
└── __init__.py

0 directories, 2 files
% python 
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from lib import BoxTime
>>> BoxTime.foo()
foo!
3

Đã trả lời ngày 28 tháng 9 năm 2015 lúc 20:53Sep 28, 2015 at 20:53

Hướng dẫn import python from subdirectory - nhập python từ thư mục con

OraneoraneOrane

2.1551 Huy hiệu vàng19 Huy hiệu bạc31 Huy hiệu đồng1 gold badge19 silver badges31 bronze badges

1