首页
学习
活动
专区
工具
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 了!

6K20

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还有一个目的 - 包初始化。...而我想要涵盖最后一件事是导入兄弟包。

    97750

    怎样合理利用 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 中添加一层当前文件夹。

    33310

    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.

    46310

    Python 常用模块学习

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

    81220

    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_就更没问题了) 通常我们并不主张使用*这种方法导入模块,因为这种方法经常会导致代码可读性降低。

    74730

    一文搞懂 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文件,引入包时,可以控制引入粒度,不需要引入无用子包和模块

    19810

    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 所包含路径列表你下,按顺序查找 怎么理解?

    65120

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

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

    1.2K10

    Python学习笔记(五)·模块

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

    92330

    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文件:日志,记录一些执行结果,待后面去查询    现在只是大概有一个思路,好多都还不会,后面会讲到

    36520

    Pythonimport vs from ... import

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

    1.7K10

    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.4K40

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

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

    7.5K40

    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 |---|--- 模块

    40420

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

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

    37820
    领券