我写了一个Python软件包<div class="form-div">
<form class="form-control" action="#" method="post">{% csrf_token %}
<script type="text/javascript" src="{% static 'js/livecart.js' %}">
display();
</script>
<h1 id="search-text">\ Checkout \</h1>
<hr>
<br>
<label class="search-input" for="select-package">Package </label><br>
<select required id="search-input" name="package-type">
<option class="search-input" value={{package}}>{{package}}</option>
</select>
<br>
<label class="search-input" for="in-date">Check-in date </label><br>
<input required id="search-input-in" type="date" name="in-date" value={{inDate}}><br>
<label class="search-input" for="out-date">Check-out date </label><br>
<input required id="search-input-out" type="date" name="out-date" value={{outDate}}><br>
<label class="search-input" for="indiviuals">Indiviuals</label><br>
<input required id="search-input-min" type="number" name="individuals" value="0" onchange="display();"><br>
<hr>
<input id="search-button" type="submit" name="search" value="Pay Rs.0">
</form>
</div>
,它可以执行一组相关任务,pack
,taskA
,...,taskB
。它们每个都有自己的模块文件,例如taskZ
。
现在在taskN.py
中说,我导入了第三方软件包taskN.py
。它可以在My Machine™上运行,但是我的同事(a)无法安装evilpack
,但是(b)甚至不需要该模块evilpack
。
我的目标是构建程序包,以便我们可以在导入时选择是加载模块taskN
还是忽略它。
解决这个问题的最优雅的方法是什么?我感觉到它与目录的taskN
文件有关。
答案 0 :(得分:1)
解决此问题的简单方法:
识别所有可能具有未实现依赖性的模块。
在执行导入的主模块中,将每个此类导入用try...except
子句包围:
try:
import packN
except ImportError as details:
print ("Could not import packN because of this error:", details)
print ("Functionality xxxx will not be available")
packN = None
如果您同事的代码未调用依赖于packN
的函数,那么一切都会很好。
答案 1 :(得分:0)
我认为我只能通过setupscript指向正确的方向,因为我无权访问您的数据/数据包详细信息。
简单地说,您将必须找到taskN.py
的{{1}}脚本,并专门从脚本内部删除模块。