
pkg|
init.py
urllib2.py
main.py
我尝试创建这么一个 pkg,其中包含了 urllib2.py,main.py 。我尝试 import urllib2 ,但是总是会自动识别为我自己创建的 urllib2 。怎么才能使用标准库中的 urllib2 ?
1 shotego OP 查了下关于 absolute import 和 relative import ,然而感觉还是一头雾水 |
2 leavic Nov 24, 2015 学习一下相对导入和绝对导入的概念 |
3 laoyuan Nov 24, 2015 改名 |
4 loryyang Nov 24, 2015 |
5 jakiepaper Nov 24, 2015 via iPhone 为什么要起个冲突的名字?故意迷惑自己吗... |
6 visaxin Nov 24, 2015 这不是自己挖坑自己跳么 |
7 valuedlute Nov 24, 2015 from xxx import xxx as xxx |
8 meloncrashed Nov 24, 2015 via iPhone 读取 module ,先是当前目录,再是环境目录。 改名吧 |
9 roychan Nov 24, 2015 大概你需要 __init__.py |
10 martyyyyy Nov 24, 2015 改名 |
13 bbking Nov 24, 2015 添加__init__.py ,另外命名尽量有意义,少冲突 |
14 clino Nov 24, 2015 import sys; print sys.path 你调整这里面的值看看,空串这个应该指的是当前目录吧 |
15 shotego OP @leavic 好吧,其实我就是想通过这里例子试验一下相对导入和绝对导入,但是 from pkg import string 怎么就提示没有 module named string 呢? |
16 roychan Nov 24, 2015 @shotego 在你放程序的目录下新建一个空的 __init__.py ,然后运行 14 楼的命令看看。 |
18 stillwater Nov 24, 2015 absolute import 是按 sys.path 里的顺序挨个找的, sys.path[0]是启动 python 解释器的那个脚本文件所在的目录,如果找不到这个文件(比如直接进交互模式)就是一个空字符串,相当于是当前目录。你直接运行 python pkg/main.py 找的是 pkg 文件夹里的 urilib2 ,你 python 进交互模式再 import pkg.main 或者 python -m pkg.main 它会在 pkg 所在的目录找,找不到后会再在 python 的目录里找,找到的是标准库里的 urllib2 你那个 init.py 加不加下划线和这个 import 没啥关系,不过你现在的这个包是个 namespace package ,和普通的不太一样,对你这个测试没啥影响。 |
19 shotego OP @stillwater 弄懂了,非常感谢 |