python导入错误类从不同的包加载

时间:2015-02-04 10:13:13

标签: python python-2.7 setup.py

我正在使用python 2.7.5。我创建了一个简单的python项目pythontest。我项目的文件夹结构如下:

pythontest
        |   
        -setup.py
        -README.md
        -src
            |
             -- pack1
                 |
                  test1.py
                  test2.py
            |
             --pack2
                |
                 test3.py

我的文件是这样的:

test1.py

print "hello"

test2.py

import test1
import src.pack2.test3
print "hai"

test3.py

print "how are you?"

我的确是这样的:

sudo python setup.py install
python src/pack1/test2.py

但我收到以下错误:

hello
Traceback (most recent call last):
  File "src/pack1/test2.py", line 7, in <module>
    import src.pack2.test3
ImportError: No module named pack2.test3

但我可以运行eclipse中的代码。我的代码出了什么问题? setup.py文件如下:

import os
from setuptools import setup
def read(fname):
    return open(os.path.join(os.path.dirname(__file__), fname)).read()

setup(
    name = "pythontest",
    version = "0.0.4",
    author = "Andrew Carter",
    author_email = "andrewjcarter@gmail.com",
    description = ("An demonstration of how to create, document, and publish "
                                   "to the cheese shop a5 pypi.org."),
    license = "BSD",
    keywords = "example documentation tutorial",
    url = "http://packages.python.org/an_example_pypi_project",
    packages=[],
    long_description=read('README.md'),
    classifiers=[
        "Development Status :: 3 - Alpha",
        "Topic :: Utilities",
        "License :: OSI Approved :: BSD License",
    ],
)

1 个答案:

答案 0 :(得分:0)

您需要将__init__.py - 文件放入包中(在您的情况下,src,pack1和pack2)才能生效。另外,你应该把src作为包名取消(它是通用的,毫无意义),而是使用与你的实际代码库有关的东西,例如: supercoolapp或amazinglib或任何你正在写的东西。

然后,您需要将该顶级包添加到setup.py中的packages-list。