用于导入模块的 Python 查找文件夹

标签 python module

两个py文件:

./src/foo.py
def bar ():
    print 'bar!'

./tests/testfoo.py
from foo import bar
print 'testing'
bar ()

在根文件夹'./'中,调用

python ./tests/testfoo.py

结果是

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

运行 testfoo.py 但解释器自然找不到模块 foo。我可以给解释器任何参数以在文件夹“src”中查找模块吗?

编辑 #1

还添加了两个空的init.py 文件。

./src/__init__.py
./tests/__init__.py

仍然出现同样的错误。

编辑 #2(解决方案)

我通过添加一个新的初始化py文件解决了问题

准备.py

import os, sys
cur = os.path.dirname (__file__)
pathtest = os.path.join (cur, 'tests')
sys.path.append (pathtest)

然后调用:

python prep.py tests/testfoo.py

成功了

最佳答案

试试这个:

import sys
sys.path.append('your/path')
import testfoo

您可能需要使 ./tests 成为绝对路径...

关于用于导入模块的 Python 查找文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12270359/

相关文章:

Python - 字符串中的第一个和最后一个字符必须是字母数字,否则删除

python - 如何检测子列表中的逻辑和字符串索引并将其删除

带有 Windows 共享文件夹的 Python3

module - 修改 SWI-Prolog 库是个好主意吗?

Magento 管理模块 Controller - 加载另一个操作

python - 为什么我的 python 合并排序实现只返回具有最小项目的单例列表?

python - 随机顺序python

python - 如何找出模块为 python 做了什么

地理 IP 查找上的 Perl 未定义错误

linux - 如何将参数从 makefile 传递到 Linux 内核模块源代码