一、模块分类:

1.标准模块,内置

2.第三方模块,pip install xxx

3.自定义模块,一个py文件就是一个模块

二、导入自定义模块

1.创建一个py文件,写入定义函数,生成moudle模块

name = "wang"
print("hello",name)

def greet(q):
    print("hi,",q)

2.在新的文件里调用自定义模块,import moudle

import moudle #导入自定义模块

moudle.greet("jean") #调用自定义模块的函数

3.查看效果

问题:如果在上级目录里执行,为什么会出现No module named ‘moudle’?

(venv) Mac-3:pythonProject10 wang$ ls
main.py         moudle.py       use_moule.py    venv
(venv) Mac-3:pythonProject10 wang$ 
(venv) Mac-3:pythonProject10 wang$ cd ..
(venv) Mac-3:PycharmProjects wang$ 
(venv) Mac-3:PycharmProjects wang$ 
(venv) Mac-3:PycharmProjects wang$ python3
Python 3.8.2 (default, Aug 25 2020, 09:23:57) 
[Clang 12.0.0 (clang-1200.0.32.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> 
>>> import moudle
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'moudle'
>>> 

当前查找的目录里并不包含自定义模块的文件

>>> import sys
>>> print(sys.path)
['', '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python38.zip', '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8', '/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.8/lib/python3.8/lib-dynload', '/Users/wang/PycharmProjects/pythonProject10/venv/lib/python3.8/site-packages']
>>> ^D
(venv) Mac-3:PycharmProjects wang$ ls
pythonProject   pythonProject10 pythonProject12 pythonProject3  pythonProject5  pythonProject7  pythonProject9
pythonProject1  pythonProject11 pythonProject2  pythonProject4  pythonProject6  pythonProject8

将自定义模块移动到site-packages目录下,保证在任何路径下可以调用

(venv) Mac-3:pythonProject10 wang$ ls
main.py         moudle.py       use_moule.py    venv
(venv) Mac-3:pythonProject10 wang$ mv moudle.py /Users/wang/PycharmProjects/pythonProject10/venv/lib/python3.8/site-packages
(venv) Mac-3:pythonProject10 wang$ 
(venv) Mac-3:pythonProject10 wang$ cd /Users/wang/PycharmProjects/pythonProject10/venv/lib/python3.8/site-packages
(venv) Mac-3:site-packages wang$ ls
_distutils_hack                 easy_install.py                 pip                             pkg_resources                   setuptools-50.3.1.dist-info
distutils-precedence.pth        moudle.py                       pip-20.2.3.dist-info            setuptools
(venv) Mac-3:site-packages wang$ cd ../../
(venv) Mac-3:lib wang$ python3
Python 3.8.2 (default, Aug 25 2020, 09:23:57) 
[Clang 12.0.0 (clang-1200.0.32.2)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import moudle
hello wang

0 Comments

发表评论

Avatar placeholder

邮箱地址不会被公开。 必填项已用*标注