在站点包中安装的版本上导入模块的开发版本

import the development version of a module over the version that is installed in site-packages

我正在开发一个 python 模块,该模块目前是闭源的,不能 继续 pip(不是我的选择)这个例子我会参考它作为 private_module。该模块依赖于我也在开发的另一个模块, 在 pip 上可用,我将其称为 public_module。这是问题 private_modulepublic_module 的开发版本位于我与同事共享的 windows 服务器上的一个目录中。需要访问代码的计算机对其 python 的可变风格具有可变文件权限,这意味着,很难 pip install ANYTHING 但同时可能存在 private_modulepublic_module 在他们的站点包目录中。还假设所有用户都没有编程经验,即使他们有,计算机也无法在没有管理员权限的情况下使用 pip 安装软件包。

目录结构可以这样表示:

我已经尝试了以下方法,如果模块没有安装到 pip 中,它可以完美地工作,但是安装在 pip 中的模块似乎比其他模块更受青睐,这是有道理的。

import os
staging = [r"F:\PythonModules\exp"]

for path in staging:
    if os.path.isdir(path):
        sys.path.append(path)

有没有一种方法可以加载新的 public 和私有模块,而不是站点包中的对应模块?

这是一个有点棘手的解决方法,但它应该适用于您的情况 - 您可以在 sys.path 的开头添加私有模块,因此它将在 public pip 版本之前被读取.像这样:

import sys
sys.path.insert(0,"F:\PythonModules\exp")