在Python 3中(在Pydev下)如何正确在包中编写导入

时间:2018-07-29 11:13:05

标签: eclipse python-3.x pydev

类似的问题已经问了很多遍,但是在我的情况下,所有建议的解决方案都没有效果(令人满意)。

我有一个Python 3项目,其结构如下:

├── project1
│   ├── package
│   │   ├── tests
│   │   │   ├── __init__.py
│   │   │   └── test1.py
│   │   ├── __init__.py
│   │   ├── module1.py
│   │   └── module2.py
│   └── setup.py

我在package(在Eclipse中)中将PYTHONPATH列为源文件夹。

在项目内部一切正常,即:

  • tests\test1.py中进行import module1的工作有效
  • module2.pyfrom module1 import foo的{​​{1}}中,工作

但是,当我打包代码并使用import module1安装代码时,我开始使用pip

如果在ImportError中我尝试project2import module2,我从from module2 import foo导入module2时收到错误消息。 为了使module1中的导入正常工作,我需要将project2中的导入更改为module2from package.module1 import foo。这使import package.module2引发导入错误。 project1也有类似的问题。

我可以在Eclipse中将test1.py文件夹添加到project1,这可以解决运行时错误,但是我仍然在PyDev中看到编译错误。

是否有任何写导入或定义PYTHONPATH的方法,以便Python 3在所有情况下都能找到导入的模块/方法? 我强调Python 3是因为我在Python 2下有一个结构相同的项目(据我所知),该项目与定义为PYTHONPATH的导入效果很好(这对Python 3引发了错误)

1 个答案:

答案 0 :(得分:0)

最终执行以下操作:

  • 将所有导入更改为完整路径,即package.module[.method]
  • package添加到了PYTHONPATH
  • 已从package.module
  • 中删除 PYTHONPATH文件夹

前两个更改足以使代码正常运行。 最后一个项目符号导致PyDev停止显示错误。