无法从已安装的模块加载 类
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=]
我正在用 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=]