我有两个模块,在下面列出的两个不同环境中都名为connection.py
。这两个包含connection.py
的文件夹都在我的PYTHONPATH系统环境变量中。
但是,如果spec
的test_connection.py
没有放在bvbot
的上面,spec的test_connection.py
会尝试从bvbot的connection.py
导入。
如果在cmd中,我可以通过将spec的路径移到bvbot的路径上来解决这个问题。但是,在Visual Studio Code中,spec的test_connection.py
仍然是从bvbot的connection.py
导入的。
感兴趣的两个环境是:
C:\Users\You_A\Desktop\2016Coding\VirtualEnviroments\spec\spec_trading
C:\Users\You_A\Desktop\2016Coding\VirtualEnviroments\bvbot\Legacy_bvbot
上述spec
路径的结构:
src/
spec_trading/
__init__.py
connection.py
tests/
__init__.py
connection.py
规范test_connection.py:
import pytest
from connection import Connection, OandaConnection
class TestConnection:
def test_poll_timeout(self):
connection = Connection()
timeout = 10.0
connection.set_poll_timeout(timeout)
assert connection.poll_timeout == timeout
我在这里做错了什么?如何才能在不手动修改系统环境变量的情况下解决此问题,并解决VSC问题?
发布于 2019-09-19 04:29:44
最简单的解决方案是不使用隐式相对导入(我假设这是Python2.7)。基本上使用显式的相对导入,并确保导入在包含它们的包中解析,而不是Python必须在sys.path
中搜索模块。
如果您使用的是Python2.7,请将from __future__ import absolute_import
放在文件的顶部。
https://stackoverflow.com/questions/57961005
复制相似问题