Zac*_*ack 12 python import module parent relative-import
我如何组织我的python导入,以便我可以拥有这样的目录.
project
| \
| __init__.py
|
src
| \
| __init__.py
| classes.py
|
test
\
__init__.py
tests.py
Run Code Online (Sandbox Code Playgroud)
然后在/project/test/tests.py中可以导入classes.py
我在tests.py中看到了这样的代码
from .. src.classes import(
scheduler
db
)
Run Code Online (Sandbox Code Playgroud)
而且我得到了错误
SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)
谁知道该怎么办?
Pet*_*son 18
Python将包含您启动的脚本的文件夹添加到PYTHONPATH,因此如果您运行
python test/tests.py
Run Code Online (Sandbox Code Playgroud)
只有文件夹test被添加到路径中(而不是您正在执行命令的基础目录).
而是像这样运行你的测试:
python -m test.tests
Run Code Online (Sandbox Code Playgroud)
这会将基础目录添加到python路径,然后可以通过非相对导入访问类:
from src.classes import etc
Run Code Online (Sandbox Code Playgroud)
如果您确实想使用相对导入样式,则需要将3个目录添加到包目录中
package
* __init__.py
* project
* src
* test
Run Code Online (Sandbox Code Playgroud)
然后你从包dir上面执行它
python -m package.test.tests
Run Code Online (Sandbox Code Playgroud)
也可以看看:
| 归档时间: |
|
| 查看次数: |
10072 次 |
| 最近记录: |