我有一个我想要及时更新的模块,我想知道这是不是一个坏主意:
在中有一个模块(mod1.py) 复制a的site-packages目录 与其他人不同的模块 进入网站包的位置 目录,然后导入* 那个模块。
import shutil
from distutils.sysconfig import get_python_lib
p_source = r'\\SourceSafeServer\mod1_current.py'
p_local = get_python_lib() + r'\mod1_current.py'
shutil.copyfile(p_source, p_local)
from mod1_current import *
现在我可以在任何模块中执行此操作,它将始终是最新版本:
from mod1 import function1
这有效....但有更好的方法吗?
更新
以下是当前流程...源代码管理下的项目只有一个模块:mod1.py
还有一个setup.py
正在运行setup.py
个副本{{1}到site-packages目录。
使用该模块的开发人员必须运行mod1.py
来更新模块。有时,他们没有,没有最新版本会导致问题。
我希望能够签入新版本,导入该模块的任何代码都会自动获取最新版本,无需任何人运行setup.py
答案 0 :(得分:2)
你真的想要这样做吗?这意味着只需提交源代码控制,您就可以非常轻松地将代码转到生产应用程序。对于那些不了解你的设置的人,我认为这是一个令人讨厌的副作用。
话虽如此,这似乎是一个非常好的解决方案 - 您可能希望在网络文件调用周围添加一些异常处理,因为它们容易出现故障。
答案 1 :(得分:1)
答案 2 :(得分:0)
让其他开发人员将mod1.py复制到他们的站点包中以便使用该模块的原始策略听起来像是真正的问题。他们为什么不只是使用相同的源代码控制?
这种自动复制会使回滚很难,特别是如果其他开发人员复制您的策略。想象一下这个系统用于数十个和几十个文件。然后想象你实际上做想要使用不是最新版本的mod1.py版本。