1

我在 Ubuntu 12.04 上使用 Anaconda 和 Python 2.7。我创建了几个包,其中一个被命名为mybasics我保存一些我反复使用的类和工具。

这个包是一个正在进行中的工作,因为我在多年的 PHP 之后完全掌握了 Python 的速度。我最初创建的包只有 2 个文件,每个文件中包含几个类。包含这两个文件的目录现在也包含其他几个文件。

我遇到的问题是我导入的时间最长并且dir(mybasics)只出现了原始的 2 个文件。我已经多次重建了这个包python setup.py install。这python setup.py install似乎适用于这两个文件中的更改,但不包括任何新文件。

包目录是这样的:

/home/gabe/python/lib/mybasics/
  ./bin
  ./build
  ./docs
  ./mybasics
    __init__.py
    cBaseClass.py
    cBeanstalk.py
    cHelpers.py
    ...
  setup.py

setup.py文件很简单:

# -*- coding: utf-8 -*-

from distutils.core import setup

setup(
    name='mybasics',
    version='0.1.0',
    author='G Spradlin',
    author_email='gabe.spradlin@{removed}.com',
    packages=['mybasics'],
    package_dir={'mybasics':'mybasics'},
    scripts=[],
    url='',
    license='LICENSE.txt',
    description='Basic Python functions and Classes.',
    long_description=open('README.txt').read(),
)

__init__.py文件为空:

# -*- coding: utf-8 -*-
"""
Created on Tue Sep  9 16:15:29 2014

@author: gabe
"""

所以当我写这篇文章时,最初没有一个新文件在工作。Spyder 崩溃了,我把它弄回来了。瞧,除了最新的文件外,现在都按预期导入了。所以我再次使用'python setup.py install'重建它,关闭Spyder,重新启动机器。仍然没有继续最新的文件。

我想知道我是否缺少一些关于包裹的东西。它真的似乎只在这个包里。我还有其他几个也在进行中,我不记得他们曾经遇到过这个问题。

感谢您的任何帮助/建议。

4

1 回答 1

0

导入包时,它不会自动导入该包中的所有子模块。您需要将它们导入到您的__init__.py文件中,或者明确地import mybasics.cBaseClass等等。

于 2015-05-04T17:34:18.073 回答