python无法导入(python无法导入自己写的模块)

  • 1、如何解决python不能导入同目录py文件
  • 2、python导入py文件报错怎么办
  • 3、python不能导入模块怎么解决
  • 4、python模块安装完成,但是在pycharm里面却导入失败
  • 5、请问为什么python3.7.3import导入模块不成功
  • 6、Python的错误导入已经安装模块问题,怎么解决

解决python不能导入同目录py文件的方法:

先查看需要导入的py文件名是否含有空格以及中文字符,如果有就删掉空格换成英文的字符

然后用“import 文件名”的方式导入py文件就可以了

更多Python知识,请关注:Python自学网!!

在缺省状态下,导入一个已编写好的py文件用import 跟上py文件名,很简单。但有时系统会出现SyntaxError: invalid syntax的错误,如下图所示

这种情况一般是由于查找目录不包含,类似于linux下的执行路径概念,可以打印sys.path来确认, 如下图

如果编写的py文件不在上述目录清单中,就可以字符串的append方法,将目录加入到上述目录清单之后。

写入目录后,再执行import上面写的py就可以成功了,如下图,i,mport ex25后没有报错

另外一种无法导入如下图,提示的错与第一个情况不一样,提示SyntaxError: invalid syntax错误

这种情况下其实不是找不到py文件,而是py文件的命名违反了规范,不能使用全数字的命名,必须需要有字母,改名后就可以导入了。

模块是指一个可以交互使用,或者从另一Python 程序访问的代码段。只要导入了一个模块,就可以引用它的任何公共的函数、类或属性。

模块可以通过这种方法来使用其它模块的功能。

用import语句导入模块,就在当前的名称空间(namespace)建立了一个到该模块的引用.这种引用必须使用全称,也就是说,当使用在被导入模块中定义的函数时,必须包含模块的名字。所以不能只使用 funcname,而应该使用 modname.funcname!

参考

github

将Inherit global site-packages这个选项勾选,应该可以解决大部分的问题了吧!

对于上面的问题,是python的虚拟环境引起的问题,如果安装了module,需要对虚拟环境进行配置,之后就可以进行使用了,不配置的话就需要点击Inherit global site-packages,或者existing interperter,这样就默认不适用虚拟环境,然后选择一个解释器即可。

选择“Create New Project”来创建新项目就会打一个创建项目的向导页。

在如上图所示的界面中,我们可以选择创建项目的模板,包括了纯Python项目、基于各种不同框架的Web项目、Web前端项目、跨平台项目等各种不同的项目模板。如果选择Python的项目,那么有一个非常重要的设定是选择“New environment…”(创建新的虚拟环境)还是使用“Existing Interpreter”(已经存在的解释器)。前者肯定是更好的选择,因为新的虚拟环境不会对系统环境变量中配置的Python环境造成影响,简单举个例子就是你在虚拟环境下安装或者更新了任何三方库,它并不会对系统原有的Python解释器造成任何的影响,但代价是需要额外的存储空间来建立这个虚拟环境。

最后发现是anaconda安装以后,interpreter没有设置成anaconda导致的

参考

;utm_source=distribute.pc_relevant.none-task

生信处理基因序列–未完待续

1、主要你是要当前使用的环境中是否已经安装了对应的模块。

2、检查当前使用的环境是否为虚拟环境的,如果为虚拟环境,则之前在python路径下安装的模块应该是不能使用的,所有还需要重新在虚拟环境中安装对应的模块。

3、在你展现的程序中呈现的是语法错误,然而并非是模块导入错误,所以好好检查你的程序出错的地方。

当遇到无法导入某个python模块时,可能会是没有安装某个模块,也有可能是某模块在加载过程中失败,也有可能是陷入了循环导入的问题。本文详细解释了这个问题。

1. 模块未安装或者路径不对

ImportError: No mudule named myModule

有两种可能,一是该模块没有安装,一般可以用

pip install %module_name%

来解决。注意有时候模块安装包名并不等于要导入的模块名。这种情况下可以通过pip search | list命令来尝试找到正确的包。

另一种情况就是包虽然安装了,但当前运行的程序加载的路径有错。python运行时将从以下位置尝试加载python modules:

* 当前目录

* 环境变量$PYTHONPATH所指示的值,这是一个由“:”分隔的字符串,各个子字符串都是文件系统的一个路径。

* 标准库目录,如dist-site-packages下的模块。

* 在.pth文件中指定的路径,如果存在.pth文件的话。

可以使用以下方式来查看python运行时的包含路径:

?

12

import sysprint(sys.path)

在运行出错的脚本装头部加上这一段代码,然后在控制台中查看打印出来的python类库路径,检查安装包是否已包含在上述路径中。

***可以通过下面的方式将未包含在路径中的模块临时包含进来:***

sys.path.append(“path/to/module”)

另外,还可以在shell窗口中查看当前的python包含路径:

echo $PYTHONPATH

2. 无法导入已存在的模块

如果要导入的模块包含了native代码,并且native代码加载(初始化)失败时,就会导致这种错误。使用ssl,

gevent等涉及native的模块时,如果对应的native程序并未安装,则会出现这样的错误。

另一种错误情况是,使用相对路径导入时,父模块还未导入成功。见下面的代码:

?

12345

main.pymypackage/ __init__.pymymodule.pymyothermodule.py

mymodule.py如下所示:

?

123456789101112

#!/usr/bin/env python3 # Exported functiondef as_int(a): return int(a) # Test function for module def _test(): assert as_int(‘1’) == 1 if __name__ == ‘__main__’: _test()

以及myothermodule代码如下所示:

?

1234567891011121314

#!/usr/bin/env python3 from .mymodule import as_int # Exported functiondef add(a, b): return as_int(a) + as_int(b) # Test function for module def _test(): assert add(‘1’, ‘1’) == 2 if __name__ == ‘__main__’: _test()

如果执行mypackage/myothermodule,则会报以下错误:

Traceback (most recent call last):

File “myothermodule.py”, line 3, in

module

from .mymodule import as_int

SystemError: Parent module

” not loaded, cannot perform relative import

[这篇文章](#Relative imports in

Python 3)给出了更详细的解答。

3. 循环导入

这种错误称之为”circular (or cyclic) imports”。是python独有的一种导入错误,在象java这样的语言中就不存在。

假设有如下两个文件,a.py和b.py:

?

1234567

#a.pyprint “a in”import sysprint “b imported: %s” % (“b” in sys.modules, )import bprint “a out”print b.x

以及:

?

12345

#b.pyprint “b in”import aprint “b out”x = 3

执行python a.py,将得到以下结果:

?

123456789101112131415

$ python a.pya in b imported: Falseb ina inb imported: Truea outTraceback (most recent call last): File “a.py”, line 4, in module import b File “/home/shlomme/tmp/x/b.py”, line 2, in module import aFile “/home/shlomme/tmp/x/a.py”, line 7, in module print b.xAttributeError: ‘module’ object has no attribute ‘x’

出现这种情况的原因是产生了循环导入。循环导入,以及在导入过程中python进行了加锁操作,最终导致在模块b未导入完成时就引用了其中的名字。

判断导入错误是否是因为循环导入引起的,主要看堆栈中是否出现两次重复的导入。比如上述堆栈中a.py出现两次,因此可以判断是这个文件引起的循环导入。

要解决这个问题,可以把模块看成一种资源,对所有要引入的模块进行编号,再按静态资源排序法顺次导入,就可以避免循环导入。

原创文章,作者:简单一点,如若转载,请注明出处:https://www.506064.com/n/126778.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
简单一点简单一点
上一篇 2024-10-03 23:13
下一篇 2024-10-03 23:13

相关推荐

  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29

发表回复

登录后才能评论