打包多个Python文件:导入导入错误

时间:2017-09-27 03:36:28

标签: python package

我正在试图弄清楚如何打包python项目,以便我可以将它分发给一些同事。 当我运行python setup.py sdist --formats=zip时,它会创建一个我可以pip install的zip,但是当我运行该文件时,它无法导入我创建的类文件。

这是我项目的文件结构(可能不正确,但我没有完全构建这个项目,并考虑到包装):

├── README.md
├── requirements.txt
├── scanner
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── googleSheets.cpython-35.pyc
│   │   ├── merakiJsonHandler.cpython-35.pyc
│   │   └── wifiTester.cpython-35.pyc
│   ├── credentials.json
│   ├── googleSheets.py
│   ├── info.json
│   ├── merakiJsonHandler.py
│   ├── scan.py
│   ├── whatWap.py
│   └── wifiTester.py
└── setup.py

'' scan.py''是我们的"主要"将所有类汇集在一起​​的脚本。这是我的setup.py看起来像:

import setuptools

setuptools.setup(name='att-scanner',
      version='0.1',
      description='Meraki Wap/Wifi Scanner',
      author='jsolum',
      author_email='*****',
      license='MIT',
      packages=setuptools.find_packages(),
      entry_points={
          'console_scripts' : [
              'mws = scanner:scan.py',],},
      install_requires=['pyspeedtest', 'requests', 'gspread', 'oauth2client',],
      include_package_data=True)

这是我的错误:

Traceback (most recent call last):
  File "//anaconda/bin/mws", line 7, in <module>
    from scanner import scan
  File "//anaconda/lib/python3.5/site-packages/scanner/__init__.py", line 1, in 
<module>
    from googleSheets import SheetsController
ImportError: No module named 'googleSheets'

为什么不能scan.py导入googleSheets.py,我该怎么做才能导入它和我的其他类?

1 个答案:

答案 0 :(得分:1)

from googleSheets import SheetsController是绝对导入语句,因此一旦安装了包,您需要使用包名:

from scanner.googleSheets import SheetsController

relative import statement

from .googleSheets import SheetsController