在导入时覆盖已安装的模块

时间:2014-10-22 16:57:33

标签: python module

我目前正在开发一个几乎可以分发的软件包。因此,我正在尝试在我的系统上安装它(通过setup.py)。但是,我还需要访问当前(源代码)包,例如用于测试。

是否可以显式强制导入本地包而不是已安装的版本?我已经尝试过的是在sys.paths开头添加路径,没有运气。

我想这个问题涉及Python究竟如何查找要导入的模块,以及如何更改顺序。

编辑:这是一个愚蠢的错误,在sys.paths作品的开头添加。我在其他地方有一些其他import语句首先被执行。

1 个答案:

答案 0 :(得分:2)

  1. force importing the local package

  2. 之类的事情是个坏主意
  3. Python3 总是首先导入内置模块,显然你使用的是Python3,因为Python2是本地优先的。

  4. 我不知道如何解决这个问题,如果我是你,我会重命名该文件。

  5. 修改

    您不使用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会正常导入。