python的包的问题

iEverX 2012-06-06 11:46:39
在import的时候出现ImportError: No moudule named q

目录结构如下

src/
---main.py
---a/
------__init__.py
------q.py
------p.py

#main.py
from a import p
p.testp()

#p.py
from q import test
def testp():
test()
print('in p.py')

#q.py
def test():
print('in q.py')


运行main.py,就会出现ImportError: No module named q

这个如何解决?谢
...全文
179 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
huer0625 2012-06-27
  • 打赏
  • 举报
回复
sys.path.append(u‘/source/file/path')
angel_su 2012-06-07
  • 打赏
  • 举报
回复
我说的是系统的环境变量。因为用包的时候都是直接import,若包不在python搜索路径里,根本跑不了,找得到包也无需在代码里执行sys.path.append自己。所以一般所谓安装模块,大多就是copy到site-packages里,自己开发的不摆到site-packages,那就添到PYTHONPATH里,效果一样...
Rlay_2 2012-06-06
  • 打赏
  • 举报
回复
好像说错了,没看仔细..
[Quote=引用 2 楼 的回复:]
src 下与main.py平级的文件,少个__init__.py
[/Quote]
Rlay_2 2012-06-06
  • 打赏
  • 举报
回复
src 下与main.py平级的文件,少个__init__.py
bugs2k 2012-06-06
  • 打赏
  • 举报
回复
貌似是:
import a.p
iEverX 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 5 楼 的回复:
但是从p.py运行的时候,就会出现ImportError: No module named a.q。。
有两全的方法吗?

正常情况模块a应该在python搜的到路径里,即使是初期构建a模块的时候,譬如你可以先添加a所在的目录到环境变量PYTHONPATH里...
[/Quote]
是这样吗
sys.path.append('a')

这样两个文件都有添加吧
iEverX 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]

引用 5 楼 的回复:

引用 4 楼 的回复:

py27试了一下没问题。貌似py3k改了吧,得from a.q import test或者from .q import test


嗯,这样确实可以从main.py运行了。。
但是从p.py运行的时候,就会出现ImportError: No module named a.q。。
有两全的方法吗?

p.py运行的时候……
[/Quote]

如果是from q import test的话,从main.py就会有ImportError了
angel_su 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
但是从p.py运行的时候,就会出现ImportError: No module named a.q。。
有两全的方法吗?
[/Quote]
正常情况模块a应该在python搜的到路径里,即使是初期构建a模块的时候,譬如你可以先添加a所在的目录到环境变量PYTHONPATH里...
libralibra 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:

py27试了一下没问题。貌似py3k改了吧,得from a.q import test或者from .q import test


嗯,这样确实可以从main.py运行了。。
但是从p.py运行的时候,就会出现ImportError: No module named a.q。。
有两全的方法吗?
[/Quote]
p.py运行的时候不需要a.p吧,直接import q就可以,因为是同级文件夹
iEverX 2012-06-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

py27试了一下没问题。貌似py3k改了吧,得from a.q import test或者from .q import test
[/Quote]

嗯,这样确实可以从main.py运行了。。
但是从p.py运行的时候,就会出现ImportError: No module named a.q。。
有两全的方法吗?
angel_su 2012-06-06
  • 打赏
  • 举报
回复
py27试了一下没问题。貌似py3k改了吧,得from a.q import test或者from .q import test

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧