首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我需要包含sys.path.append来导入Python3.6的模块,而我的大学不需要?

在Python中,sys.path是一个包含模块搜索路径的列表。当我们导入一个模块时,Python解释器会按照sys.path列表中的路径顺序去查找对应的模块文件。如果模块文件存在于sys.path中的某个路径下,就可以成功导入该模块。

通常情况下,Python解释器会自动将一些默认的路径添加到sys.path中,以便能够找到常用的标准库和第三方库。这些默认路径包括Python安装目录下的site-packages文件夹、当前工作目录等。

然而,当我们需要导入一个非默认路径下的模块时,就需要手动将该路径添加到sys.path中。这通常发生在以下几种情况下:

  1. 自定义模块:如果你编写了一些自定义的模块,并且这些模块不在默认的路径中,那么你需要使用sys.path.append来将这些模块所在的路径添加到sys.path中,以便能够导入它们。
  2. 第三方库:有些第三方库可能没有被自动添加到sys.path中,或者你希望使用特定版本的第三方库而不是默认版本。这时候,你需要手动将第三方库所在的路径添加到sys.path中。
  3. 环境配置:有时候,你可能需要在不同的环境中使用不同的模块路径。通过在代码中使用sys.path.append,你可以根据需要动态地修改模块搜索路径。

至于为什么在大学的环境中不需要使用sys.path.append来导入Python3.6的模块,可能有以下几个原因:

  1. 大学的环境可能已经配置好了Python解释器的默认路径,包括标准库和常用第三方库的路径。
  2. 大学的环境可能已经将自定义模块的路径添加到了sys.path中,以便能够方便地导入这些模块。
  3. 大学的环境可能使用了虚拟环境(virtualenv)或者包管理工具(如pipenv、conda)来管理Python环境,这些工具会自动处理模块路径的配置。

需要注意的是,不同的环境可能存在差异,所以在不同的环境中可能需要使用sys.path.append来导入模块。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【python & VS Code】调用自定义模块 ModuleNotFoundError: No module named

在 VS Code 等轻量文本编辑器/项目管理器中,我不希望像 pycharm 一样由配置文件自动管理我们的调用模块路径。但这就有一个问题:需要我们写几行代码,将自定义模块的路径添加到系统路径中。...其算法实现封装在 lib 中,而我们实现算法时,并不需要直接调用 lib 中的任何东西。我们只需要调用 moment_localization 中的文件。...甚至在 lib 中的各个模块中,也无需 init paths 。 那么问题来了,这么简单的道理,谁都能一看就懂,为什么很久 python 使用经验的我困在这里一个小时呢!...[\迷之微笑] 请记住:sys.path.append()添加的是路径不是模块! sys.path.append()添加的是路径不是模块! sys.path.append()添加的是路径不是模块!...我迷惑了好久,直到我将 sys.path 打印出来: ? 我才终于意识到:sys.path.append()添加的是路径不是模块! 不要 import library 了!

6.2K20

python中import星_Python imports 指北

我们已经知道一点,当从CLI调用你的代码而不是导入它时,这个代码片段会有所不同。 现在让我们试着去理解我们为什么需要用它。 为了说明,假设我们正在编写一款披萨店软件。 源码在Github上。...当你导入模块时,它会被执行 因为模块只是纯文件,所以有一个简单的方法来导入它们。 只取文件名,去掉.py扩展名并将其放入import语句中。...要创建一个包,创建一个包含__init__.py文件的目录 请记住,程序包是模块的名称空间,因此您不会导入包本身,而是从包中导入模块。...这是一个很好的惯例配置示例,我们不需要描述任何配置或注册任何东西。约定包含__init__.py的任何目录都是Python包。 除了标识一个包,__init__.py还有一个目的 - 包初始化。...而我想要涵盖的最后一件事是导入兄弟包。

1.1K00
  • Python imports指南

    我们已经知道一点,当从CLI调用你的代码而不是导入它时,这个代码片段会有所不同。 现在让我们试着去理解我们为什么需要用它。 为了说明,假设我们正在编写一款披萨店软件。 源码在Github上。...当你导入模块时,它会被执行 因为模块只是纯文件,所以有一个简单的方法来导入它们。 只取文件名,去掉.py扩展名并将其放入import语句中。...要创建一个包,创建一个包含__init__.py文件的目录 请记住,程序包是模块的名称空间,因此您不会导入包本身,而是从包中导入模块。...这是一个很好的惯例配置示例,我们不需要描述任何配置或注册任何东西。约定包含__init__.py的任何目录都是Python包。 除了标识一个包,__init__.py还有一个目的 - 包初始化。...而我想要涵盖的最后一件事是导入兄弟包。

    98950

    怎样合理利用 Python 的 Package

    把本模块里面的公用的method在 __init__.py 的时候暴露出来,这样在其他地方的引用就不需要引用具体位置,只需要引用这个包就好了。...能够节省一定的时间。 在 class 已经足以解决大部分问题的当下,为什么需要 package ? 首先随着项目的变大,通过 package 来整理项目变得尤为重要。...Python 是通过 module 组织代码的,module 即一个 py 文件,module 又是通过 package 来组织的, package 是一个包含 __init__.py 的文件夹,代码,...module, package 它们三者的关系就是:module 包含代码, package 至少包含一个为 __init__.py 的 module。...因此我们不需要再对我们的 main.py 做任何修改了。我们需要做的事情只有在每一个 __init__.py 中添加一层当前文件夹。

    34310

    python中import原理

    导入 module 中的属性 如果我只是引入 module 中的一个属性变量呢?那 sys.modules 中还是会加载该 module,将其属性变量作为全局变量引入。.../json/__init__.py'> 模块不需要了,del 销毁 del 销毁的只是销毁当前全局变量中的变量,并不会影响 sys.modules 中的缓存。...,那么如果 module 文件变动,则无法拿到最新的 module,这个时候需要通过手动调用 importlib.reload 来重新加载,从本地文件中重新加载 module 对象到 sys.modules...总结 import 的加载过程: 先从 sys.modules 中查看是否有导入的模块,有,则获取该模块,并加入到当前的全局变量中。...如果 sys.modules 中没有需要导入的模块,则按照 sys.path 中的目录路径进行搜索找到对应的模块文件再加载到 module 对象中返回。 6.

    46910

    Python 常用模块学习

    一、什么是模块 Python中的模块是可以将代码量较大的程序分割成多个有组织的、彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块。...Python允许“导入”其他模块以实现代码重用,从而也实现了将独立的代码文件组织成更大的程序系统。Python中,模块也是对象。在一个模块的顶层定义的所有变量都在被导入时成为了被导入模块的属性。...顶层文件包含了程序的主要控制流程,模块文件是为顶层文件或其他模块提供各种功能性组件,模块首次导入(或重载)时,Python会立即执行模块文件的顶层程序代码(不在函数内的代码),而位于函数主体内的代码直到函数被调用后才会执行...2、模块的执行环境 模块是被导入的,但模块也可以导入和使用其他模块,这些模块可以用Python或其它编程语言写成 模块可内含变量、函数以及类来进行其工作,而函数和类可以包含变量和其它元素 3、导入模块...(sys.path)搜索模块文件 2、编译成字节码 文件导入时就会编译,因此,顶层文件的.pyc字节码文件在内部使用后会被丢弃,只有被导入的文件才会留下.pyc文件 3、执行模块的代码来创建其所定义的对象

    82420

    python之模块和包

    ,下划线来分割 三 模块相关属性 1 模块的搜索顺序 使用sys.path 来查看模块的搜索顺序 ?...包也是模块,但模块不一定是包,包是特殊的模块,是一种组织方式,它包含__path__属性 5 绝对导入和相对导入 1 概念 凡是通过sys.path 找到的,都是绝对路径 绝对导入 在import...import * 方式导入,使用简短,其副作用是会导入大量不需要使用的环境变量,甚至造成名称冲突,而_all_ 可以控制被导入模块在这种导入方式下能够提供的变量名称,就是为了阻止from ......,修改模块的变量,类,函数等内容 五 包管理 1 为什么要使用包管理 python 的模块或者源文件直接可以复制到项目中,便可以导入使用了,但为了更多项目的调用和使用,或者共享给别人,就需要进行打包...wheel打包格式,pip 提供了一个wheel子命令来安装wheel包,当然,需要先安装wheel模块,它可以让python库以二进制形式安装,而不需要在本地编译。

    1.4K10

    Python3 模块

    from…import* 语句 把一个模块的所有内容全都导入到当前的脚本中是可行的,只需使用如下声明: from modname import * 这提供了一个简单的方法来导入一个模块中的所有项目。...在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。...from sound.effects import echo 上面这段代码会导入这样形式的子模块: echo,但是他不需要那些冗长的前缀,所以他可以这样去访问模块中的函数或属性: echo.echofilter...作为包的作者,可别忘了在更新包之后保证 _all_ 也更新了啊。你说我就不这么做,我就不使用导入*这种用法,好吧,没问题,谁让你是老板呢。...(当然如果定义了_all_就更没问题了) 通常我们并不主张使用*这种方法来导入模块,因为这种方法经常会导致代码的可读性降低。

    75330

    一文搞懂 Python 的模块和包,在实战中的最佳实践

    一文搞懂 Python 的模块和包,在实战中的最佳实践 最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析。...使用 sys.path.append() 追加类库搜索目录【极不推荐】 既然 sys.path 中不包含我们期望的路径,那么我们可以通过 sys.path.append(xxx) 手动的将要包含的路径追加进去...:python -m xxx.xxx.模块名,前面的 xxx 是包名,这样,模块的 __name__ 值就会包含实际的包名和模块名,可以让相对导入正常工作。...由此看来,我推荐的方式是,大多数情况下,总是以绝对导入的形式,来引用你项目的包和模块。那相对导入就无用武之地了吗?...而我在使用 pymsql 第三方包时,看到其官方文档上的示例代码,感到有些迷惑: 我原先的错误认知是,import pymysql.cursors ,我就只能引用 pymysql.cursors,而如果想再引用上一级

    1.6K41

    python历险记之模块导入

    包 包含多个模块的文件夹,导入该包即导入该包内的模块。必须有 __init__.py文件。...python 如何找到导入的模块 python会按顺序来查找导入的模块:从sys.modules 查找 -> 查找器查找。 sys.modules:缓存了之前导入的所有模块。...的方式来包含指定导入模块。. 代表当前包所在目录,.. 为上级目录。只能使用 from xxx import xxx 的方式导入。因为 .moduleY 不是一个有效表达式。...每个模块中都会有一个方法,打印 “i am xxx_method”,来明确显示我们的模块导入和调用是成功的。...推荐使用 from xxx imoprt yyy 的方式来引入。结合__init__.py文件,引入包时,可以控制引入粒度,不需要引入无用的子包和模块。

    21610

    Python - 模块与包

    前言 如果你在 51 Testting 上面见到这篇文章,不要以为我是盗版哦!因为那是我投稿的文章 模块和包的定义 ?...模块的定义:任何 *.py 的文件都可以当作模块使用 import 导入 包的定义:包含一个__init__.py和其他模块、其他子包的一个目录 实际项目中,所谓的包和模块分别代表什么,如下:...的部分导入意思就是:导入最小单位可以是模块,也可以是变量、函数名、类名 导入模块的方法 根据上面讲的知识,如果要导入模块有两种方式,一个就是 import 模块名 一个就是 from 包名 import...模块名 导入test包下的run模块 # import import test.run # from from run import test 导入test包下的run、tests模块 # import...回答:我们是通过 sys.path 所包含的路径列表你下,按顺序查找的 怎么理解?

    66220

    Python学习笔记(五)·模块

    为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。...你也许还想到,如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python 又引入了按目录来组织模块的方法,称为包(Package)。...现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。...greeting()函数,而把内部逻辑用 private 函数隐藏起来了,这样,调用greeting()函数不用关心内部的 private 函数细节,这也是一种非常有用的代码封装和抽象的方法,即: 外部不需要引用的函数全部定义成...- 北京理工大学

    94330

    一文搞懂Python中的核心概念:导入,模块,包

    python 2.x Python会颠倒True和False的含义,这就是为什么我们在命名和导入模块时需要小心的原因。...PART 01 检查导入的模块 当你导入一个模块时,你如何知道这个模块的内部?当然,您可以查看文档,但如果您很懒,不想启动无聊的文档怎么办?Python提供了一种方便的方式来实现这一点。...现在运行不带参数的dir()函数,看看当前模块中包含了什么。...dir() 您将在结果列表中看到导入的数学 [ ..., math, ... ] 还有一件事,如果您想删除现有的模块,可以使用del来删除它。...Package是一个管理Python模块的解决方案。一个包是一个特殊的文件夹,包含多个模块和一个附加的__init__.py文件。 下面是一个示例包结构。

    1.2K10

    Python学习(七):模块 优雅的封装

    文件,以 .py 结尾,包含了 Python 对象定义和Python语句。...模块让你能够有逻辑地组织你的 Python 代码段。 把相关的代码分配到一个模块里能让你的代码更好用,更易懂。 模块能定义函数,类和变量,模块里也能包含可执行的代码。...在 Python中用关键字 import来引入某个模块,比如要引用模块 math,就可以在文件最开始的地方用 importmath来引入。...在调用math模块中的函数时,必须这样引用: 模块名.函数名 为什么必须加上模块名这样调用呢?...greeting()函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()函数不用关心内部的private函数细节,这也是一种非常有用的代码封装和抽象的方法,即: 外部不需要引用的函数全部定义成

    7.6K40

    python 学习笔记(8)——python绝对路径相对路径

    在Python中以绝对路径或者相对路径导入文件的方法 1、在Python中以相对路径或者绝对路径来导入文件或者模块的方法    今天在调试代码的时候,程序一直提示没有该模块,一直很纳闷,因为我导入文件一直是用绝对路径进行导入的...4、最后了解一下 python 在不同层级目录import 模块的方法(重点) 有一个文件夹/home/a, 里面有个模块叫b.py, 我怎么把他import到程序里?...py 即:要导入的文件的当前目录和父目录都要有init.py文件 ----   Python包含子目录中的模块方法比较简单,关键是能够在sys.path里面找到通向模块文件的路径。...– mod2.py – test1.py   若在程序test1.py中导入模块mod2, 需要在mod2文件夹中建立空文件__init__.py文件(也可以在该文件中自定义输出模块接口); 然后使用...import sys sys.path.append(“..”) import mod1 import mod2.mod2 (4)从(3)可以看出,导入模块关键是能够根据sys.path环境变量的值,找到具体模块的路径

    5.5K40

    day21 02 包的进阶

    ,但是运行结果会报错,为什么呢?...()获取次页面所在的目录,即bin的目录 # os.path.dirname(os.getcwd())#获取bin所在的目录,即当前页面所在的上层目录,而bin所在的目录还包含了core文件 #sys.path.append...()#调用core里面的main函数 由于添加了上层目录的问题,可以直接在core.py里面导入login模块,然后直接调用login模块里面的login函数: from core import login...#从core里面导入login模块 def main(): print('main') login.login()#已经导入login模块了,可以直接调用函数了 运行start.py页面...(5)lib文件:自己写的通用模块或包,完整模块,不需要安装 (6)log文件:日志,记录一些执行结果,待后面去查询    现在只是大概有一个思路,好多都还不会,后面会讲到

    37220

    Python的import vs from ... import

    的运行过程如下: 首先在sys.modules中查找module_name,sys.modules中包含所有之前导入模块的缓存。...注: 导入模块之后,可以通过模块的__file__属性来获取模块所在的目录,其是sys.path中的目录之一。sys.path[0]为空,表示当前目录。...执行import 之后,放到了调用者的局部符号表里,但模块中定义的对象仍在模块的私有符号表里。访问模块中定义的对象需要使用.符号。...,命令执行之后,模块中的对象被引用到调用者的环境中,可以直接对其访问,而不需要添加模块前缀。...这是方式的导入会将模块中的对象直接添加到调用者的符合表里,并会覆盖调用者符号表里的同名对象。

    1.7K10

    【愚公系列】2021年12月 Python教学课程 17-模块与包

    大多数时候,我们不需要直接导入到函数的级别,只需要导入到模块级别或者类的级别,就只需要使用 import Django.contrib.auth.models 导入 models 模块,以后使用models.User...来引用 models 模块中的类。...总之,对于 xx.xx,你想导入到哪个级别,取决于你的需要,可以灵活调整,没有固定的规则。 1. import xx.xx 这会将对象(这里的对象指的是包、模块、类或者函数,下同)中的所有内容导入。...三、 包的概念 为了避免模块名冲突,Python 又引入了按目录来组织模块的方法,称为包(Package),包是模块的集合,比模块又高一级的封装。...Python 会进入文件系统,找到这个包里面所有的子模块,一个一个的把它们都导入进来。 但是这个方法有风险,有可能导入的模块和已有的模块冲突,或者并不需要导入所有的模块。

    38720

    python 2 :包管理

    1. package.module 一个模块就是一个包含pytho代码的文件, 后缀名成是.py就可以,模块就是个python文件 使用模块进行拆分程序,方便维护;增加复用率;当做命名空间使用,避免命名冲突...模块的定义和普通文件无很大区别 导入 假如模块名称直接以数字开头,需要借助importlib帮助:a = importlib("123.say()") import module_name...import func_name, class_name 此方法使用的时候可以直接使用导入的内容,不需要前缀 from ... import * 此方法导入也会导入自动处理的语句:如print("hello...模块的搜索路径和存储 sys.path (列表)属性可以获取路径列表 添加搜索路径: sys.path.append(dir) 模块的加载顺序 1.搜索内存中已经加载好的模块 2.搜索python...的内置模块 3.搜索sys.path路径 3 包 用于将模块包含在一起的文件夹就是包 |---包 |---|--- init.py 包的标志文件 |---|--- 模块1 |---|--- 模块

    40920
    领券