我正在使用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
个文件。
那么我做错了什么?
答案 0 :(得分:1)
在你的情况下,正确的导入是
from virt_template.virt_template import VirtualMachine
您的问题是从virt_template.py
导入相关模块的方式。你应该做
from . import debian_platform
或
from virt_template import debian_platform
麻烦的根本原因是在测试代码时设置在virt_template目录内的pythonpath,以及在安装setuptools后使用的site_packages
库目录