【问题标题】:What's the correct way to import a python package?导入python包的正确方法是什么?
【发布时间】:2014-01-03 17:19:14
【问题描述】:

到目前为止,我有一个 Python 项目,其结构如下:

foo/
   __init__.py
   bar/
       __init__.py
       config.cfg
       README.md
       src/
          __init__.py
          myfile_a.py
          myfile_b.py
       tests/
          test_myfile_a.py
   README.md

test_myfile_a.py 里面我有:

 1 #!/usr/bin/python
  2 import unittest
  3 from foo.bar.src import myfile_a
  4 
  5 class TestToolsFunctions(unittest.TestCase):
  6 
  7     def setUp(self):
  8         file_a = MyFile_A()

  9   if __name__ == '__main__':
  10     unittest.main()

然后我得到:

Traceback (most recent call last):
  File "tests/test_myfile_a.py", line 3, in <module>
    from foo.bar.src import myfile_a
ImportError: No module named foo.bar.src

设置该路径的正确方法是什么?

** 编辑 ** foo 目录是一个 git 存储库,位于我的 ~/home 目录:/home/pribeiro/foo 我也尝试过import foo:

import foo
ImportError: No module named foo

【问题讨论】:

  • foo 在哪里? import foo 有效吗?
  • 我在页面 RHS 的“相关”列表中看到至少 3 个问题可能会为您提供问题的答案。
  • 如果import foo 不起作用,您可能必须先import sys 然后sys.path.append(&lt;Directory&gt;) 才能将其添加到您的路径中。
  • @chepner 问题已更新...
  • @JonathanLeffler 不,他们帮不了我……我之前做过搜索……

标签: python testing module path operating-system


【解决方案1】:

foo 在你的 PATH 中吗? 试试

import sys
print sys.path

如果将 foo 添加到路径中,则 foo.bar.src 应该是一个有效的模块

【讨论】:

  • 如何在路径中添加foo
  • @grandocu 的评论(使用 sys.path.append)将起作用,但仅适用于该会话(命令/终端窗口)。永久添加它取决于您的平台(linux/mac?)。在windows上很简单,在linux上涉及更多。我去看看,有几篇关于它的SO帖子
  • print sys.path 是否返回您添加的目录?
  • 确实... @grandocu
猜你喜欢
  • 2021-01-17
  • 2016-10-27
  • 2019-09-04
  • 2016-01-11
  • 2019-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-19
相关资源
最近更新 更多