gpt4 book ai didi

python - 使用 setup.py 安装包的导入错误

转载 作者:IT老高 更新时间:2023-10-28 22:20:56 24 4
gpt4 key购买 nike

我在使用 setup.py 设置 python 包时遇到问题。首先,我有以下目录设置:

maindir
|- setup.py
|-mymodule
|- __init__.py
|- mainmodule.py
|-subdir
|- __init__.py
|- submodule.py

即项目目录包含 setup.py 和一个目录 mymodule,它本身包含两个目录中的两个 python 模块。submodule.py 文件只包含

teststring = "hello world"

mainmodule.py 包含:

from .subdir import submodule
mainstring = "42"

setup.py 包含:

import os
from setuptools import setup
setup(
name = "mytestmodule",
version = "0.0.1",
description = ("A simple module."),
packages=['mymodule'],
)

当我从 sourceTest 中使用 ipython 执行 from mymodule import mainmodule 时,行为按预期工作,我可以引用例如mainmodule.submodule.teststring 这给了我字符串 hello world

另一方面,当我使用 python setup.py install 安装此“包”并尝试执行相同操作(从其他目录中)时,我收到导入错误:

In [1]: from mymodule import mainmodule
---------------------------------------------------------------------------
ImportError Traceback (most recent call last)
/home/alexander/<ipython-input-1-cf4c9bafa487> in <module>()
----> 1 from mymodule import mainmodule

/home/alexander/build/bdist.linux-i686/egg/mymodule/mainmodule.py in <module>()

ImportError: No module named subdir

我没有看到我做错了什么,因为我关注了 Getting started tutorialrules for importing intra-packages .我想我的错误是一个非常小的错误,但我无法发现它并且感谢您的帮助。

最佳答案

你必须列出setup中的所有包,包括子包:

setup(
name = "mytestmodule",
version = "0.0.1",
description = ("A simple module."),
packages=['mymodule', 'mymodule.subdir'],
)

或者你可以使用setuptools的神奇功能find_packages:

from setuptools import setup, find_packages
setup(
name = "mytestmodule",
version = "0.0.1",
description = ("A simple module."),
packages=find_packages(),
)

提到了here :

If you have sub-packages, they must be explicitly listed in packages, but any entries in package_dir automatically extend to sub-packages. (In other words, the Distutils does not scan your source tree, trying to figure out which directories correspond to Python packages by looking for __init__.py files.)

关于python - 使用 setup.py 安装包的导入错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15368054/

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