【问题标题】:Python - can't import, nosetests throws errorPython - 无法导入,nosetests 抛出错误
【发布时间】:2015-08-05 14:54:01
【问题描述】:

我在 Python 方面相对较新,我刚刚开始制作一个框架目录以开始分发我的项目等。我按照 LPTHW 书(练习 46)按照他说的创建了目录,还阅读了设置脚本和 Distutils 的文档。 我现在在我的 Windows 上,我是这样构建的:

C:\Python27\projects
            - skeleton
            - newproj
                 - (d) bin
                      - foo.py
                 - (d) docs
                 - (d) newproj
                      - __init__.py
                 - (d) tests
                      - __init__.py
                      - newproj_test.py
                 - setup.py

setup.py 与文档中的示例相同:

from distutils.core import setup
setup(name = 'foo',
      version = '1.0',
      py_modules = ['foo'],
      )

在 'init' 脚本中有一些我不太明白为什么的东西,但是:

from nose.tools import *
import foo

def setup():
    print "SETUP!"

def teardown():
    print "TEAR DOWN!"

def test_basic():
    print "I RAN!"

在 newproj 中,我有一个 bin 目录,我在其中编写了一个名为 foo.py 的简单脚本。问题是我打开了 Python 解释器,但它在任何地方都找不到 foo.py。如果我去 cmd,我必须一直去 C:\Python27\projects\newproj\bin 然后输入 python,这样我就可以导入 foo。我怎么能改变呢?有没有什么方法可以导入东西而不是去脚本/模块/程序的确切位置(还不知道它们之间的确切区别)来导入它?

真正的问题是我应该在 newproj 目录上运行nosetests,它不应该抛出任何错误,但它确实,它说没有名为 foo 的模块,我不知道该怎么做现在,我尝试了一切。我将 Path 变量更改为具有以下三个:C:\Python27\Scripts;C:\Python27;C:\Python27\projects

【问题讨论】:

  • 您的 setup.py 与来自the exercise 的不对应。无关:我不确定tests/__init__.py(它创建顶级测试Python 包)和bin/foo.py(除非你有几十个脚本,bin 目录不能证明摩擦是合理的)。

标签: python python-2.7 path


【解决方案1】:

尝试将C:\Python27\projects\newproj\bin 添加到您的 PYTHONPATH 环境变量中

【讨论】:

    【解决方案2】:

    我必须一直到 C:\Python27\projects\newproj\bin 然后输入 python,这样我才能导入 foo.我怎么能改变呢?

    我也在艰难地学习 python。初学者犯的最大错误之一是一直到确切的文件位置。永远不要那样做!在您的情况下,您应该位于 C:\Python27\projects\newproj 然后从那里您在 shell 中键入 python 并使用以下命令导入 foo:

    from bin import foo
    

    但在您成功导入之前,您需要确保您拥有 导入目录中的 init.py 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2023-02-01
      • 2014-01-29
      • 1970-01-01
      • 2018-02-21
      相关资源
      最近更新 更多