187
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 đang gặp khó khăn khi hiểu cách nhập mô -đun hoạt động trong Python [tôi chưa bao giờ thực hiện nó bằng bất kỳ ngôn ngữ nào khác trước đây].
Giả sử tôi có:
myapp/__init__.py
myapp/myapp/myapp.py
myapp/myapp/SomeObject.py
myapp/tests/TestCase.py
Bây giờ tôi đang cố gắng để có được một cái gì đó như thế này:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
Tuy nhiên, tôi chắc chắn đang làm điều gì đó sai vì Python không thể thấy rằng
ImportError: No module named myapp
1 là một mô -đun:ImportError: No module named myapp
hỏi ngày 21 tháng 2 năm 2012 lúc 18:27Feb 21, 2012 at 18:27
1
Trong trường hợp cụ thể của bạn, có vẻ như bạn đang cố gắng nhập
ImportError: No module named myapp
2 từ các tập lệnh myApp.py và testcase.py. Từ myapp.py, làmimport SomeObject
Vì nó nằm trong cùng một thư mục. Cho testcase.py, làm
from ..myapp import SomeObject
Tuy nhiên, điều này sẽ chỉ hoạt động nếu bạn đang nhập TestCase từ gói. Nếu bạn muốn trực tiếp chạy
ImportError: No module named myapp
3, bạn sẽ phải gây rối với con đường của mình. Điều này có thể được thực hiện trong Python:import sys
sys.path.append[".."]
from myapp import SomeObject
mặc dù điều đó thường không được khuyến khích.
Nói chung, nếu bạn muốn người khác sử dụng gói Python của mình, bạn nên sử dụng Distutils để tạo tập lệnh thiết lập. Bằng cách đó, bất cứ ai cũng có thể cài đặt gói của bạn dễ dàng bằng một lệnh như
ImportError: No module named myapp
4 và nó sẽ có sẵn ở mọi nơi trên máy của họ. Nếu bạn nghiêm túc về gói, bạn thậm chí có thể thêm nó vào Chỉ số gói Python, PYPI.Đã trả lời ngày 21 tháng 2 năm 2012 lúc 18:46Feb 21, 2012 at 18:46
David Robinsondavid RobinsonDavid Robinson
75,7K15 Huy hiệu vàng162 Huy hiệu bạc180 Huy hiệu Đồng15 gold badges162 silver badges180 bronze badges
6
Hàm
ImportError: No module named myapp
5 tìm các tệp vào env pythonpath của bạn. Biến và thư mục địa phương của bạn. Vì vậy, bạn có thể đặt tất cả các tệp của mình vào cùng một thư mục hoặc xuất đường dẫn vào một thiết bị đầu cuối ::export PYTHONPATH="$PYTHONPATH:/path_to_myapp/myapp/myapp/"
Michael
1.6872 Huy hiệu vàng19 Huy hiệu bạc 30 Huy hiệu Đồng2 gold badges19 silver badges30 bronze badges
Đã trả lời ngày 21 tháng 2 năm 2012 lúc 18:31Feb 21, 2012 at 18:31
ZenonzenonZenon
1.46313 Huy hiệu bạc20 Huy hiệu đồng13 silver badges20 bronze badges
4
Đường dẫn xuất khẩu là một cách tốt. Một cách khác là thêm một .pth vào vị trí gói trang web của bạn. Trên máy Mac của tôi, Python của tôi giữ các gói trang web trong /thư viện /python được hiển thị bên dưới
/Library/Python/2.7/site-packages
Tôi đã tạo một tệp có tên Awesome.pth at /l Library/opython/2.7/site-packages
/opt/awesome/custom_python_modules
Đã trả lời ngày 20 tháng 5 năm 2013 lúc 23:36May 20, 2013 at 23:36
JMontrossjMontrossjmontross
3,4551 Huy hiệu vàng20 Huy hiệu bạc17 Huy hiệu đồng1 gold badge20 silver badges17 bronze badges
4
Bạn co thể thử
from myapp.myapp import SomeObject
Bởi vì tên dự án của bạn giống như myApp.py khiến nó tìm kiếm tài liệu dự án trước
Đã trả lời ngày 6 tháng 3 năm 2017 lúc 13:54Mar 6, 2017 at 13:54
阿东 刘阿东阿东刘
1291 Huy hiệu bạc2 Huy hiệu đồng1 silver badge2 bronze badges
Bạn cần phải có
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
0Trong tất cả các thư mục có mã bạn cần tương tác. Bạn cũng cần chỉ định tên thư mục hàng đầu của dự án trong mỗi lần nhập ngay cả khi tệp bạn cố gắng nhập ở cùng cấp độ.
Đã trả lời ngày 5 tháng 6 năm 2020 lúc 15:42Jun 5, 2020 at 15:42
KrysaleadkrysaleadKrysalead
511 Huy hiệu bạc1 Huy hiệu đồng1 silver badge1 bronze badge
Trong thư mục myApp đầu tiên của bạn, bạn có thể thêm một tệp setup.py và thêm hai mã python vào setup.py
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
1Trong thư mục MyApp đầu tiên của bạn trong CommandLine, hãy sử dụng PIP Install -e. Để cài đặt gói
Đã trả lời ngày 28 tháng 10 năm 2017 lúc 11:30Oct 28, 2017 at 11:30
未来 陆家嘴 的 陆家嘴 顶尖 顶尖 的 的 投资人 投资人 投资人未来陆家嘴顶尖的投资人
1.68819 Huy hiệu bạc19 Huy hiệu đồng19 silver badges19 bronze badges
ImportError: No module named myapp
6 trên Windows 10 mặc định để cài đặt trong 'Tệp chương trình/pythonxx/lib/trang web trang web', một thư mục yêu cầu các đặc quyền quản trị. Vì vậy, tôi đã khắc phục sự cố của mình bằng cách chạy Cài đặt PIP với tư cách là Quản trị viên [bạn phải mở Dấu nhắc lệnh làm Quản trị viên ngay cả khi bạn đã đăng nhập bằng tài khoản quản trị viên]. Ngoài ra, sẽ an toàn hơn khi gọi Pip từ Python. ví dụ. ImportError: No module named myapp
7 thay vì ImportError: No module named myapp
8running pip install as Administrator [you have to open command prompt as administrator even if you are logged in with an admin account]. Also, it is safer to call
pip from python.e.g.
ImportError: No module named myapp
7instead of
ImportError: No module named myapp
8Đã trả lời ngày 21 tháng 8 năm 2018 lúc 9:12Aug 21, 2018 at 9:12
Sziraquisziraquisziraqui
5.4953 Huy hiệu vàng26 Huy hiệu bạc37 Huy hiệu đồng3 gold badges26 silver badges37 bronze badges
1
Trong trường hợp của tôi, đó là Windows vs Python bất ngờ, mặc dù tên tệp Windows không nhạy cảm với trường hợp, Python Nhập là. Vì vậy, nếu bạn có tệp
ImportError: No module named myapp
9, bạn cần nhập tên này là.Đã trả lời ngày 17 tháng 5 năm 2018 lúc 9:31May 17, 2018 at 9:31
Astrowalkerastrowalkerastrowalker
2.8372 Huy hiệu vàng16 Huy hiệu bạc33 Huy hiệu Đồng2 gold badges16 silver badges33 bronze badges
Giả sử tôi viết một mô -đun
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
2Chúng ta phải nói với Python nơi để tìm mô -đun. Chúng tôi phải thêm con đường của chúng tôi vào
import SomeObject
0myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
3Bây giờ
import SomeObject
1 trả về: myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
4Chúng tôi đã tạo mô -đun của mình, chúng tôi đã thông báo cho Python đường dẫn của nó, bây giờ chúng tôi sẽ có thể nhập nó
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
5Đã trả lời ngày 14 tháng 9 năm 2020 lúc 2:09Sep 14, 2020 at 2:09
0
Điều này làm việc cho tôi:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
6import SomeObject
2 biểu thị rằng nó sẽ tìm kiếm bất kỳ mô -đun cục bộ nào từ mô -đun cha.Đã trả lời ngày 30 tháng 5 lúc 3:58May 30 at 3:58
Câu trả lời ngắn:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
7Thực hiện tệp cần thiết thông qua cờ mô -đun hoạt động cho tôi. Hãy nói rằng chúng tôi có một cấu trúc thư mục điển hình như dưới đây:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
8Bây giờ nếu bạn muốn chạy một tệp bên trong một thư mục, điều đó có nhập từ các mô -đun khác, tất cả những gì bạn cần làm giống như dưới đây:
myapp.py
===================
from myapp import SomeObject
# stuff ...
TestCase.py
===================
from myapp import SomeObject
# some tests on SomeObject
9PS: Bạn phải sử dụng ký hiệu DOT để giới thiệu các mô hình con [tệp/tập lệnh bạn muốn thực thi]. Ngoài ra tôi đã sử dụng Python3.9+. Vì vậy, tôi không yêu cầu không có bất kỳ init.py hay bất kỳ câu lệnh nào của Sys Path.init.py nor any sys path append statements.
Hy vọng điều đó sẽ giúp! Mã hóa hạnh phúc!
Đã trả lời ngày 29 tháng 8 năm 2021 lúc 13:23Aug 29, 2021 at 13:23
Deekshith Ananddeekshith AnandDeekshith Anand
1.6451 Huy hiệu vàng18 Huy hiệu bạc20 Huy hiệu Đồng1 gold badge18 silver badges20 bronze badges
Nếu bạn sử dụng Anaconda, bạn có thể làm:
ImportError: No module named myapp
0Từ shell và nó sẽ viết đường dẫn của bạn vào một tệp conda.pth vào thư mục tiêu chuẩn cho các mô-đun bên thứ 3 [gói trang web trong trường hợp của tôi].
Đã trả lời ngày 5 tháng 8 lúc 21:39Aug 5 at 21:39