日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python no module name_python导包显示No module named XXX问题

發布時間:2025/3/20 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python no module name_python导包显示No module named XXX问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近用sublime text寫python腳本,在導包是一直顯示No module named XXX。

問題描述:

首先文件夾的目錄結構如下:

count.py文件,代碼如下:

1 #coding=utf-8

2

3 def add(a=3,b=8):

4 return a+b

5

6 if __name__ == '__main__':

7 print add()

counttest.py文件,代碼如下:

#coding=utf-8

from model import count

c=add(4,6)

print c

運行之后,顯示的結果是:

理論上講,從model導入count.py文件,是對的,到底哪里出錯了?

三種解決方案:

(1)在model目錄下新建__init__.py文件,內容為空,在counttest.py文件中更改如下:c=count.add(4,6)

運行結果如下:

(2)在__init__.py文件寫入:

import count

在counttest.py文件更改為:

1 #coding=utf-8

2

3 from model import * #這一行做了更改

4

5 c=count.add(4,6)

6

7 print c

運行結果如下:

(3)在__init__文件中,更改為:

1 #coding=utf-8

2 __all__ = ['count'] #count為需要導入的文件

運行結果如下:

原理:

原來在python模塊的每一個包中,都有一個__init__.py文件(這個文件定義了包的屬性和方法)然后是一些模塊文件和子目錄,假如子目錄中也有 __init__.py 那么它就是這個包的子包了。當你將一個包作為模塊導入(比如從 xml導入 dom )的時候,實際上導入了它的 __init__.py 文件。

一個包是一個帶有特殊文件 __init__.py 的目錄。__init__.py 文件定義了包的屬性和方法。其實它可以什么也不定義;可以只是一個空文件,但是必須存在。如果 __init__.py 不存在,這個目錄就僅僅是一個目錄,而不是一個包,它就不能被導入或者包含其它的模塊和嵌套包。

_init__.py 文件:

__init__.py 控制著包的導入行為。假如 __init__.py 為空,那么僅僅導入包是什么都做不了的。

>>> import Package1

>>> Package1.Module1

Traceback (most recent call last):

File "D:/Work Space/Python practice/MyPractice/src/test.py", line 8, in

aa=Package1.Module1

AttributeError: 'module' object has no attribute 'Module1'

我們需要在 __init__.py 里把 Module1 預先導入:

#文件 __init__.py

import Module1

測試:

>>> import Package1

>>> aa=Package1.Module1

>>> print aa

__init__.py 中還有一個重要的變量,叫做 __all__。我們有時會使出一招“全部導入”,也就是這樣:

from PackageName import *

這時 import 就會把注冊在包 __init__.py 文件中 __all__ 列表中的子模塊和子包導入到當前作用域中來。比如:

#文件 __init__.py

__all__ = ["Module1", "Module2", "subPackage1", "subPackage2"]

測試:

>>> from Package1 import *

>>>

test1111111111111111111111

test222222

__init__.py 文件會在導入時被執行。

python的引外機制:

import abc

1、首先在當前目錄下找有沒有abc、abc.py

2、找python的安裝目錄:F:\Python2.7Exe\Lib\site-packages;F:\Python2.7Exe\Lib;

3、找電腦中path下面的目錄

總結

以上是生活随笔為你收集整理的python no module name_python导包显示No module named XXX问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。