我已经尝试阅读有关兄弟进口甚至 包文档的问题,但我还没有找到答案.
具有以下结构:
??? LICENSE.md
??? README.md
??? api
? ??? __init__.py
? ??? api.py
? ??? api_key.py
??? examples
? ??? __init__.py
? ??? example_one.py
? ??? example_two.py
??? tests
? ??? __init__.py
? ??? test_one.py
Run Code Online (Sandbox Code Playgroud)
如何在脚本 examples和tests目录从导入
api模块,并可以从命令行运行?
此外,我想避免sys.path.insert每个文件的丑陋黑客.当然这可以在Python中完成,对吧?
我似乎无法使用鼻子测试框架来识别文件结构中测试脚本下面的模块.我已经设置了一个最简单的例子来演示这个问题.我将在下面解释.
这是包文件结构:
./__init__.py
./foo.py
./tests
./__init__.py
./test_foo.py
Run Code Online (Sandbox Code Playgroud)
foo.py包含:
def dumb_true():
return True
Run Code Online (Sandbox Code Playgroud)
tests/test_foo.py包含:
import foo
def test_foo():
assert foo.dumb_true()
Run Code Online (Sandbox Code Playgroud)
两个init .py文件都是空的
如果我nosetests -vv在主目录(foo.py所在)中运行,我得到:
Failure: ImportError (No module named foo) ... ERROR
======================================================================
ERROR: Failure: ImportError (No module named foo)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/loader.py", line 379, in loadTestsFromName
addr.filename, addr.module)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 39, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/usr/lib/python/site-packages/nose-0.11.1-py2.6.egg/nose/importer.py", line 86, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File …Run Code Online (Sandbox Code Playgroud) 我有一个结构如下的项目:
project
??? api
? ??? __init__.py
? ??? api.py
??? instance
? ??? __init__.py
? ??? config.py
??? package
? ??? __init__.py
? ??? app.py
??? requirements.txt
??? tests
??? __init__.py
Run Code Online (Sandbox Code Playgroud)
我正在尝试config.py从package/app.py如下所示调用文件:
# package/app.py
from instance import config
# I've also tried
import instance.config
import ..instance.config
from ..instance import config
Run Code Online (Sandbox Code Playgroud)
但我总是收到以下错误:
Traceback (most recent call last):
File "/home/csymvoul/projects/project/package/app.py", line 1, in <module>
from instance import config
ModuleNotFoundError: No module named 'instance'
Run Code Online (Sandbox Code Playgroud)
修改sys.path不是我想做的事情。我知道这个问题得到了很好的回答,但给出的答案对我不起作用。
编辑: …