当前位置:首页 » 编程语言 » python查找模块

python查找模块

发布时间: 2023-02-09 06:58:01

A. python如何找到当前模块名称

模块可以通过查看预定义的全局变量__name__找到自己的模块名称。如果它的值为'__main__',程序将作为脚本运行。通常,通过导入使用的许多模块也提供命令行界面或自检,并且只在检查__name__之后,才执行之后的代码:

def main():
print('Running test...')
...

if __name__ == '__main__':
main()

B. python提示找不到os

os 模块是内置模块。
打包的话大和 anaconda 应该没多大关系吧。anaconda 虽不推荐,但这个锅它不应该背。
我怀疑是你程序里面自己定义了一个名为 os 变量还是别的。

把程序自己看看清楚。
为什么我总觉得很奇怪?一个能够写到需要打包给别人用的程度的人却不知道 os 是内置模块???这个程序莫不是不是你自己写的吧?

C. python 模块的路径搜索方法

导入一个叫 spam 的模块时,解释器先在当前目录中搜索名为 spam.py 的文件。如果没有找到的话,接着会到 sys.path 变量中给出的目录列表中查找。 sys.path 变量的初始值来自如下:
输入脚本的目录(当前目录)。
环境变量 PYTHONPATH 表示的目录列表中搜索
(这和 shell 变量 PATH 具有一样的语法,即一系列目录名的列表)。
Python 默认安装路径中搜索。
Note
在支持符号链接的文件系统中,输入的脚本所在的目录是符号链接指向的目录。 换句话说也就是包含符号链接的目录不会被加到目录搜索路径中。
实际上,解释器由 sys.path 变量指定的路径目录搜索模块,该变量初始化时默认包含了输入脚本(或者当前目录), PYTHONPATH 和安装目录。这样就允许 Python 程序了解如何修改或替换模块搜索目录。需要注意的是由于这些目录中包含有搜索路径中运行的脚本,所以这些脚本不应该和标准模块重名,否则在导入模块时 Python 会尝试把这些脚本当作模块来加载。这通常会引发错误。

D. Python找不到自定义的模块

Python导入模块时实际上是在 sys.path 中进行查找的。
一般会包括标准库、第三方库、当前文件目录。
6. 模块 — Python 3.10.5 文档

有时候我们定义的模块不在这里面,可以手动 append 到 sys.path 。

相对路径:在Python中可以用 . 表示当前目录, .. 表示当前文件的上一级目录。这个相对路径实际上是相对 执行python xx.py命令时候 所在的目录。

E. 如何查看Python未下载的模块

在终端里输入pip list可以查看你的机子上已经安装的python模块和版本。那么你机子上没有列出的模块就是未下载未安装的模块了

F. 那些Python中的模块

Python的解释环境是很好用,但是如果我们需要编写一个大型的程序的时候,解释环境就完全不够用了。这个时候我们需要将python程序保存在一个文件里。通常这个文件是以.py结尾的。

对于大型的应用程序来说,一个文件可能是不够的,这个时候我们需要在文件中引用其他的文件,这样文件就叫做模块。

模块是一个包含Python定义和语句的文件。文件名就是模块名后跟文件后缀 .py 。在模块内部,模块名可以通过全局变量 __name__ 获得。

还是之前的斐波拉赫数列的例子,我们在fibo.py文件中存放了函数的实现:

编写完毕之后,我们可以在Python的解释环境中导入它:

然后直接使用即可:

常用的函数,我们可以将其赋值给一个变量:

或者,我们在导入的时候,直接给这个模块起个名字:

或者导入模块中的函数:

每个模块都有它自己的私有符号表,该表用作模块中定义的所有函数的全局符号表。因此,模块的作者可以在模块内使用全局变量,而不必担心与用户的全局变量发生意外冲突。

前面我们提到了可以使用import来导入一个模块,并且 __name__ 中保存的是模块的名字。

java中的main方法一样,如果我们想要在模块中进行一些测试工作,有没有类似java中main方法的写法呢?

先看一个例子:

在模块中,我们需要进行一个判断 __name__ 是不是被赋值为 "__main__"。

我们这样来执行这个模块:

以脚本执行的情况下,模块的 __name__ 属性会被赋值为 __main__ , 这也是例子中为什么要这样写的原因。

看下执行效果:

如果是以模块导入的话,那么将不会被执行:

使用import导入模块的时候,解释器首先会去找该名字的内置模块,如果没找到的话,解释器会从 sys.path变量给出的目录列表里寻找。

sys.path的初始目录包括:

要想查看模块中定义的内容,可以使用dir函数。

上面的例子列出了当前模块中定义的内容,包括变量,模块,函数等。

我们可以给dir加上参数,来获取特定模块的内容:

java中有package的概念,用来隔离程序代码。同样的在Python中也有包。

我们看一个Python中包的例子:

上面我们定义了4个包,分别是sound,sound.formats, sound.effects, sound.filters。

__init__.py 可以是一个空文件,也可以执行包的初始化代码或设置 __all__ 变量。

当导入的时候, python就会在 sys.path 路径中搜索该包。

包的导入有很多种方式,我们可以导入单个模块:

但是这样导入之后,使用的时候必须加载全名:

如果不想加载全名,可以这样导入:

那么就可以这样使用了:

还可以直接导入模块中的方法:

然后这样使用:

如果一个包里面的子包比较多,我们可能会希望使用 * 来一次性导入:

那么如何去控制到底会导入effects的哪一个子包呢?

我们可以在 __init__.py 中定义一个名叫 __all__ 的列表,在这个列表中列出将要导出的子包名,如下所示:

这样from sound.effects import * 将导入 sound 包的三个命名子模块。

如果没有定义 __all__,from sound.effects import * 语句 不会 从包 sound.effects 中导入所有子模块到当前命名空间;它只会导入包 sound.effects。

Import 可以指定相对路径,我们使用 . 来表示当前包, 使用 .. 来表示父包。

如下所示:



G. 如何找出python中已经安装好的模块

  • 首先我们想找到python的安装位置,一般在开始中就可以查询到

热点内容
php建网站 发布:2024-11-01 10:07:37 浏览:566
利用旧电脑搭建自己的私有云服务器 发布:2024-11-01 10:07:24 浏览:608
dl388p服务器怎么换硬盘 发布:2024-11-01 10:02:12 浏览:254
云服务器可以打游戏嘛 发布:2024-11-01 09:49:49 浏览:582
编程聚会 发布:2024-11-01 09:38:51 浏览:898
7z压缩密码 发布:2024-11-01 09:38:50 浏览:660
sql字符串去掉空格 发布:2024-11-01 09:27:27 浏览:17
c语言学生通讯录 发布:2024-11-01 09:26:22 浏览:286
门线告警算法 发布:2024-11-01 09:24:58 浏览:522
当乐网源码 发布:2024-11-01 09:08:08 浏览:226