我目前正在开发一个即将发布的包。因此,我正在尝试在我的系统上安装它(通过 setup.py
)。但是,我还需要访问当前(源代码)包,例如用于测试。
是否可以显式强制导入本地包而不是已安装的版本?我已经尝试过在 sys.paths 的开头添加路径,但没有成功。
我想这个问题涉及Python如何准确地查找要导入的模块,以及如何更改顺序。
编辑:这是一个愚蠢的错误,在 sys.paths
的开头添加。我在其他地方有一些首先执行的其他 import
语句。
最佳答案
做
force importing the local package
之类的事情是个坏主意。 .Python3 总是首先导入内置模块,显然您正在使用 Python3,因为 Python2 是本地优先的。
我不知道如何解决这个问题,如果我是你,我会重命名该文件。
编辑
您不使用append
因为追加是到最后。使用insert
。
在我的CPU上测试过。我创建了一个requests.py
在另一个文件夹中。
>>> import sys
>>> sys.path.insert(0 ,"path-to-another-folder/")
>>> import requests
>>> requests.get
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'get'
>>>
如果我不这样做sys.path.insert(0 ,"path-to-another-folder/")
, requests
已正常导入。
关于python - 覆盖导入中已安装的模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26512926/