我有一个项目,我建立在一个我并行构建的库上。结构如下:
project/
main.py
MyLibrary/
__init__.py --> empty
Module1.py --> contain the class Class1
Module2.py --> contain the class Class2
Module3.py --> contain the class Class3
...
我需要将Class2类导入Class1.py,如果我这样做
from Module1 import Class1
没关系。但是在project / main.py中我做了
from MyLibrary import Module1
我得到了ImportError:没有模块名称Module1
我可以通过替换:
解决问题from Module1 import Class1
通过
from .Module1 import Class1
但是后来我再也无法运行Module1.py了(Python抱怨我试图对非包装产生相对影响......)。我需要进行测试。
我如何才能在两种情况下都能导入?
感谢您的关注!
编辑:第一个描述的解决方案似乎适用于我的Linux桌面,但不适用于我的Windows Xp powerred笔记本电脑。这很奇怪......
答案 0 :(得分:1)
您遇到的行为(导入在一台计算机上而不是另一台计算机上正常运行)通常会发生,因为您在一个系统上有多个名为MyLibrary的程序包,而您的PYTHONPATH未列出“。”第一
要测试这是否是问题,请在项目目录中运行Python并执行
>>> import MyLibrary
>>> print MyLibrary
并查看MyLibrary的路径是否符合您的期望。如果没有,请调整您的PYTHONPATH和/或删除包的过期版本。
避免此类问题的常用方法是使用virtualenv创建一个独立的Python环境。