gpt4 book ai didi

使用带有脚本的 setuptools 的 Python 相对导入

转载 作者:太空宇宙 更新时间:2023-11-04 05:23:55 25 4
gpt4 key购买 nike

我正在为我一直从事的项目过渡到基于包的工作流程。我希望能够将开发环境和生产环境分开,我认为 setuptools 在一定程度上提供了这种可能性。

我有一个结构如下的项目:

modulename/
setup.py
modulename/
file_a.py
script.py

在 script.py 中,我想导入 file_a.py。目前我通过 import file_a 来做到这一点。

我的 setup.py 看起来像:

from setuptools import setup, find_packages

setup(name='modulename',
packages = find_packages(),
package_dir = {'': '../modulename'},
scripts = ['modulename/script.py'])

目前,当我在完成 python setup.py install 后运行 script.py 时,我收到一条错误消息:

SystemError: 父模块 '' 未加载,无法执行相对导入

我已经尝试了 package_dir = ... 的各种排列,最著名的是 package_dir = {'': 'modulename'},但这会引发另一个错误安装,错误:包目录 'modulename/modulename' 不存在

我不确定我做错了什么。 setuptools 的在线文档在处理涉及相对导入的情况时相对较差。有人可以指出我正确的方向吗?

最佳答案

此问题与 setuptools 无关。在作为 __main__ 执行的模块中使用相对导入不是开箱即用的。有变通办法/技巧,但最常见的解决方案似乎是将脚本移出包或在脚本文件中使用绝对导入。

看看Relative imports in Python 3完整的故事。

关于使用带有脚本的 setuptools 的 Python 相对导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39455388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com