解决Could not install packages due to an OSError: [WinError 5] 拒绝访问。问题

解决Could not install packages due to an OSError: [WinError 5] 拒绝访问。问题

    • 问题描述
    • 解决办法
    • 为什么使用python-m

问题描述

今天在练习栈式自编码器时出现No module named 'visualdl’问题,在pip时遇到了本地拒绝访问问题。
解决Could not install packages due to an OSError: [WinError 5] 拒绝访问。问题_第1张图片

解决办法

python -m pip install visualdl
解决Could not install packages due to an OSError: [WinError 5] 拒绝访问。问题_第2张图片在这里插入图片描述

为什么使用python-m

对于“python -m name”,一句话解释:Python 会检索sys.path ,查找名字为“name”的模块或者包(含命名空间包),并将其内容当成__main__模块来执行。

以“.py”为后缀的文件就是一个模块,在“-m”之后使用时,只需要使用模块名,不需要写出后缀,但前提是该模块名是有效的,且不能是用 C 语言写成的模块。

在“-m”之后,如果是一个无效的模块名,则会报错“No module named xxx”。

如果是一个带后缀的模块,则首先会导入该模块,然后可能报错:Error while finding module specification for ‘xxx.py’ (AttributeError: module ‘xxx’ has no attribute __ path __.

普通模块 python -m test / python test.py两种写法看起来等效的,但是它的前提是,在执行目录中存在着“test.py”,且只有唯一的“test”模块。对于本例,如果换一个目录执行的话,“python test.py”当然会报找不到文件的错误,然而,“python -m test”却不会报错,因为解释器在遍历sys.path 时可以找到同名的“test”模块,并且执行。

我们其实可以总结出“-m”的用法:已知一个模块的名字,但不知道它的文件路径,那么使用“-m”就意味着交给解释器自行查找,若找到,则当成脚本执行。

你可能感兴趣的:(pipの坑,python,开发语言)