我已经检查了我的问题是否在其他地方得到了回答,但我发现两个问题(Can anyone explain python's relative imports?和Python gives relative import error for package?)看上去与我的问题最相似,但并没有回答我的问题。我还使用以下搜索查询进行搜索:“没有名为package.module的模块”)。
我正在开发一个包,它既可以作为工具使用,也可以被其他脚本导入。因此,我以以下方式设置了它:
/<package_name>/__init__.py # to be able to import it by other scripts
/__main__.py # to be able to use it 'live' as tool
/<modules.py>最初,我将__main__.py和模块设置为pylint所需的:以“模拟”__main__.py为例:
import package_name.module1 as module1
import package_name.module2 as module2
def main(arg_list=None):
module1.somefunction()
module2.somefunction()
if __name__ == '__main__':
main()但是,当我执行此操作时,会得到以下错误(即使在__main__.py中):
No module named package_name.module1如果我将package_name从导入的执行工作中删除,那么pylint就会开始抱怨:
__main__.py: 1: [W0403(relative-import), ] Relative import 'module1', should be 'package_name.module1'
__main__.py: 2: [W0403(relative-import), ] Relative import 'module2', should be 'package_name.module2'我已经尝试过from package_name import module1,但在执行代码时也会出现同样的错误。
我应该做些什么来修复它,使pylint和工具执行都接受相同的代码(更好的方法是导入,因为pylint想要它)。
编辑:为了清楚起见:我工作的公司目前仍然使用Python2.7,但是我们通过使用Python3打印语句和类似的(from __future__ import <python3 functionality>)使代码python3兼容。
(注意:__init__.py只导入__main__.py并调用main(),在执行import package_name.__main__时没有给出问题)
发布于 2020-09-15 09:29:53
密码在我看来没问题。通常,这类问题归结为找出了调用代码的正确方法。在这种情况下,您可能需要确保这样称呼它:python -m package_name,并且Python应该自动找到并运行package_name/__main__.py。
https://stackoverflow.com/questions/63881853
复制相似问题