gpt4 book ai didi

python-3.x - 从 setup.py 中的包导入脚本

转载 作者:行者123 更新时间:2023-12-04 14:00:57 26 4
gpt4 key购买 nike

我想用 setup.py它从脚本导入,脚本是必须安装的包的一部分。这个脚本只包含一个 dict包含用于创建入口点的字符串。我没有在 setup.py 中对它们进行硬编码因为我想稍后从已安装的软件包中再次使用此列表。

只是为了清除这里我的目录结构和重要文件:

PackageA
|_package_a
| |_models
| |_modules
| | |_do_query.py
| | |_...
| |_setup_cfg.py
| |_ __init__.py
| |_...
|_ __init__.py
|_setup.py

__init__.py package_a :
from .setup_cfg import setup_config

setup_cfg.py :
setup_config = {
'scripts': [
'do_query'
]
}

setup.py :
    # -*- coding: utf-8 -*-

from setuptools import setup, find_packages
from .package_a import setup_config

with open('README.rst') as f:
readme = f.read()

with open('LICENSE') as f:
license = f.read()

setup(
...,
entry_points={
'console_scripts': ['{}=package_a.modules.{}:main'.format(script, script) for script in setup_config.get('scripts')]
},
)

我可以导入 from .package_a import setup_config并且 pycharm 正确解析了这个导入。但是,如果我尝试通过 pip3 install . 安装软件包它失败了 ModuleNotFoundError: No module named '__main__.package_a'; '__main__' is not a package
(我们使用 pip 而不是 python setup.py install 因为我们希望将整个源文件夹安装在站点包中而不是捆绑版本中)

任何人都可以向我解释该异常或提供实现此类配置的正确方法吗? (在导入已安装的包时, setup_config.py 中的 dict 也必须可以从 setup.py 访问。

最佳答案

我遇到了类似的问题,也以非常奇怪的方式解决了它,我真的不知道它起作用的原因,甚至我认为它不应该起作用。

我只是没有相对路径导入

例如:

from package_a import setup_config

刚刚删除了相对路径( 点删除 ),它起作用了。 pycharm 抛出错误,但在运行时 pip3 install .有效。请让我知道它是否适合您。

关于python-3.x - 从 setup.py 中的包导入脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45280653/

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