本文目录一览:
python中不同目录下导包问题
你太多概念不清了。
你只是修改了sys.path,并没有执行import.
sys.path里面添加的是test2的路径。这样只能import method2,然后调用 method2.xxx。不可能写 test1.number(10)
一般不建议在代码里面操作sys.path。你这里test1/test2都定义成了package,一般是在test2上一级目录执行程序,或者把test2的上一级目录添加到PYTHONPATH环境变量。这样test1, test2所有内容都可以直接import,可以互相调用。
建议先好好看书。把基础打好。
如何在python3中正确导入同一目录下的模块
因为要absolute_import,这样import webchat_sdk.basic应该没问题了。
在 Python 2 里面可以使用 import foo来导入相同目录包下的模块foo,在 Python 3 里面就是导入的项目根目录(最上层有__init__.py的目录)包foo。 也就是说 Python 3 默认就是绝对导入的,import .foo只是相对于绝对导入来说的,并不是相对导入。
python相对导入?
除了让包内导入更加显式,这个功能的一部分设计初衷是,为了帮助脚本解决同名文件出现在模块搜索路径上多个不同位置时的二义性。考虑包目录,这定义了一个名为mypkg 的包,其中含有名为mypkg.main和mypkg.string 的模块。现在,假设模块main试图导入名为string的模块。在 Python 2.X和更早版本中,Python会先寻找mypkg目录以执行相对导入。这会找到并导入位于该处的string.py文件,将其赋值给mypkg.main模块命名空间内的名称string。不过,这一导入的本意可能是要导入Python标准库的string模块。可惜的是,在这些Python版本中,无法直接忽略mypkg.string 去寻找位于模块搜索路径更右侧的标准库中的string模块。此外,我们无法使用完整包导入路径来解决这个问题,因为我们无法依赖在每台机器上的标准链接库路径。换句话说,包中的简单导入可能具有二义性而且容易出错。在包内,我们无法确定imports pam语句指的是包内的模块还是包外的模块。一种可能的后果是,一个局部的模块或包会在不经意间隐藏了sys.path 上的另一个模块。在实践中,Python使用者可以避免为他们自己的模块重复使用标准库模块的名称(如果需要标准string库,就不要把新的模块命名为string)。但是,一个包还是有可能意外地隐藏标准库模块。再者,Python 以后可能新增标准库模块,而其名称可能刚好就和自己的一个模块同名。而依赖于没有点号开头相对导入的程序代码同样也不容易理解,因为读者可能对希望使用哪个模块而感到困惑。所以我们最好能在代码中显式地指出导入的解析过程。
python怎样导入自己写的包
python导入自己写的包的方法:
1、导入同级目录下的文件可以用“import 包名”导入
2、导入子目录文件可以用“from 包名 import 文件名”导入
更多Python知识,请关注:Python自学网!!