无法导入我自己的带有distutils的模块

时间:2016-09-03 21:52:39

标签: python pip importerror distutils

我想打包我的应用程序以在多个项目之间共享它。 我的setup.py看起来像这样:

# -*- coding: utf-8 -*-
from distutils.core import setup

setup(
    name='foo_bar',
    version='1.0',
    py_modules=['foo_bar'],
    install_requires=[
        'bitstring==3.1.5',
        'pytz==2016.4',
        'wheel==0.24.0', ]
)

然后我运行命令

python setup.py sdist

为我创建tar.gz文件

我在使用我的foo_bar应用程序时遇到了麻烦。我通过pip

将它安装到单独的virtualenv中
pip install dist/foo_bar.tar.gz

并且pip冻结的输出表明它已安装

foo-bar==1.0
bitstring==3.1.5
pytz==2016.4
wheel==0.24.0

当我尝试在python控制台中导入此模块时

import foo_bar

我得到ImportError: No module named 'foo_bar'

我失踪了什么?

编辑:

我的文件结构如下:

foo_bar
├── dist
│   └── foo_bar-1.0.tar.gz
├── __init__.py
├── MANIFEST
├── bar.py
├── requirements.txt
├── setup.py

1 个答案:

答案 0 :(得分:1)

你能提供你的目录结构吗?当你尝试导入你的模块时,你是否在同一个virtualenv?你为什么使用py_modules而不是packages

此外,您尝试导入foo_bar,但您的包中没有foo_bar.py!尝试将bar.py重命名为该名称。

注意:我从未以这种方式使用过包。通常,您在与__init__.py相同的级别上创建一个包(具有setup.py文件的目录)。这意味着,您将在项目中创建另一个foo_bar目录,并在那里放置bar.py。然后你会像import foo_bar.bar一样导入它。