无法从已安装的模块加载 类

Cannot load classes from installed module

我正在用 Python 3 开发一个项目,我想将它打包为一个 Python 模块,以便它可以作为一个库安装到我们的机器上。但是我在安装后导入模块时遇到问题所以让我给你看代码

├── README.txt
├── setup.py
├── virt_template
│   ├── debian
│   │   └── interfaces
│   ├── debian_platform.py
│   ├── __init__.py
│   ├── virt_template.py
│   └── test
│       ├── __init__.py
│       └── virt_template_test.py

这是setup.py内容

from setuptools import setup, find_packages

setup(
    name = "virt_template",
    packages = find_packages(),
    package_data = {"virt_template" : ["debian/*"]},
    version = "1.0.0",
    author = "Petr Mensik",
    author_email = "petr.mensik@mail.cz",
    classifiers = [
        "Programming Language :: Python",
        "Programming Language :: Python :: 3",
        "Intended Audience :: Developers",
        "Operating System :: Linux",
        "Topic :: Software Development :: Libraries :: Python Modules",
    ]
)

现在,当我 运行 python3 setup.py install 模块正确安装到 /usr/local/lib/python3.4/dist-packages/virt_template-1.0.0-py3.4.egg/virt_template 时,文件夹结构如下

├── debian
│   └── interfaces
├── debian_platform.py
├── __init__.py
├── virt_template.py
└── test
    ├── __init__.py
    └── virt_template_test.py

到目前为止一切顺利,对我来说这似乎是正确的。但是当我做

from virt_template import VirtualMachine 

我得到 cannot import name VirtualMachine。所以我尝试了

from virt_template.virt_template import VirtualMachine 

结果是 No module named 'debian_platform' - 这可能是指 debian_platform.py 文件。

那我做错了什么?

在你的情况下,正确的导入是

from virt_template.virt_template import VirtualMachine 

您的问题是您从 virt_template.py 导入相关模块的方式。你应该做

from . import debian_platform

from virt_template import debian_platform

问题的根本原因是测试代码时设置在 virt_template 目录内的 pythonpath,以及在使用 setuptoolssite_packages 安装后使用的库目录

=15=]